@arcis/node 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/dist/cli/arcis.d.ts +23 -0
- package/dist/cli/arcis.d.ts.map +1 -0
- package/dist/cli/arcis.js +312 -0
- package/dist/cli/arcis.js.map +1 -0
- package/dist/cli/arcis.mjs +309 -0
- package/dist/cli/arcis.mjs.map +1 -0
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +4 -1
- package/dist/core/index.mjs.map +1 -1
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +253 -141
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +253 -141
- package/dist/index.mjs.map +1 -1
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/index.mjs.map +1 -1
- package/dist/middleware/bot-detection.d.ts.map +1 -1
- package/dist/middleware/csrf.d.ts.map +1 -1
- package/dist/middleware/index.js +224 -3
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/index.mjs +224 -3
- package/dist/middleware/index.mjs.map +1 -1
- package/dist/middleware/main.d.ts.map +1 -1
- package/dist/sanitizers/index.d.ts +2 -1
- package/dist/sanitizers/index.d.ts.map +1 -1
- package/dist/sanitizers/index.js +213 -145
- package/dist/sanitizers/index.js.map +1 -1
- package/dist/sanitizers/index.mjs +213 -146
- package/dist/sanitizers/index.mjs.map +1 -1
- package/dist/sanitizers/sanitize.d.ts +13 -0
- package/dist/sanitizers/sanitize.d.ts.map +1 -1
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/index.mjs.map +1 -1
- package/dist/telemetry/client.d.ts +3 -0
- package/dist/telemetry/client.d.ts.map +1 -1
- package/dist/telemetry/types.d.ts +12 -0
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/index.mjs.map +1 -1
- package/package.json +4 -1
|
@@ -33,7 +33,10 @@ var XSS_PATTERNS = [
|
|
|
33
33
|
/** base href hijacking — redirects all relative URLs to attacker domain */
|
|
34
34
|
/<base[\s>]/gi,
|
|
35
35
|
/** link tag injection — stylesheet or preload CSRF attacks */
|
|
36
|
-
/<link[\s>]/gi
|
|
36
|
+
/<link[\s>]/gi,
|
|
37
|
+
/** style tag — CSS expression() / behavior: / IE-era attacks. Mirrors
|
|
38
|
+
* Python's xss-style-tag from packages/core/patterns.json. */
|
|
39
|
+
/<style[\s>]/gi
|
|
37
40
|
];
|
|
38
41
|
var XSS_REMOVE_PATTERNS = [
|
|
39
42
|
/** Full script blocks (content + tags) */
|
|
@@ -426,150 +429,6 @@ function detectCommandInjection(input) {
|
|
|
426
429
|
return false;
|
|
427
430
|
}
|
|
428
431
|
|
|
429
|
-
// src/sanitizers/sanitize.ts
|
|
430
|
-
function sanitizeString(value, options = {}) {
|
|
431
|
-
if (typeof value !== "string") return value;
|
|
432
|
-
const maxSize = options.maxSize ?? INPUT.DEFAULT_MAX_SIZE;
|
|
433
|
-
if (value.length > maxSize) {
|
|
434
|
-
throw new InputTooLargeError(maxSize, value.length);
|
|
435
|
-
}
|
|
436
|
-
const reject = options.mode === "reject";
|
|
437
|
-
let result = value;
|
|
438
|
-
if (options.sql !== false) {
|
|
439
|
-
if (reject) {
|
|
440
|
-
if (detectSql(result)) {
|
|
441
|
-
throw new SecurityThreatError("sql_injection", "SQL pattern detected in input");
|
|
442
|
-
}
|
|
443
|
-
} else {
|
|
444
|
-
result = sanitizeSql(result);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
if (options.path !== false) {
|
|
448
|
-
result = sanitizePath(result);
|
|
449
|
-
}
|
|
450
|
-
if (options.command !== false) {
|
|
451
|
-
if (reject) {
|
|
452
|
-
if (detectCommandInjection(result)) {
|
|
453
|
-
throw new SecurityThreatError("command_injection", "Shell metacharacter detected in input");
|
|
454
|
-
}
|
|
455
|
-
} else {
|
|
456
|
-
result = sanitizeCommand(result);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
if (options.xss !== false) {
|
|
460
|
-
result = sanitizeXss(result, false, options.htmlEncode ?? false);
|
|
461
|
-
}
|
|
462
|
-
return result;
|
|
463
|
-
}
|
|
464
|
-
function sanitizeObject(obj, options = {}) {
|
|
465
|
-
if (obj === null || obj === void 0) return obj;
|
|
466
|
-
if (typeof obj === "string") return sanitizeString(obj, options);
|
|
467
|
-
if (typeof obj !== "object") return obj;
|
|
468
|
-
if (Array.isArray(obj)) return obj.map((item) => sanitizeObject(item, options));
|
|
469
|
-
const result = sanitizeObjectDepth(obj, options, 0);
|
|
470
|
-
return options.freeze ? Object.freeze(result) : result;
|
|
471
|
-
}
|
|
472
|
-
function sanitizeObjectDepth(obj, options, depth) {
|
|
473
|
-
if (depth >= INPUT.MAX_RECURSION_DEPTH) return obj;
|
|
474
|
-
const result = {};
|
|
475
|
-
for (const key of Object.keys(obj)) {
|
|
476
|
-
if (options.proto !== false && DANGEROUS_PROTO_KEYS.has(key.toLowerCase())) {
|
|
477
|
-
continue;
|
|
478
|
-
}
|
|
479
|
-
if (options.nosql !== false && NOSQL_DANGEROUS_KEYS.has(key)) {
|
|
480
|
-
continue;
|
|
481
|
-
}
|
|
482
|
-
const sanitizedKey = sanitizeString(key, options);
|
|
483
|
-
const value = obj[key];
|
|
484
|
-
if (value === null || value === void 0) {
|
|
485
|
-
result[sanitizedKey] = value;
|
|
486
|
-
} else if (typeof value === "string") {
|
|
487
|
-
result[sanitizedKey] = sanitizeString(value, options);
|
|
488
|
-
} else if (Array.isArray(value)) {
|
|
489
|
-
result[sanitizedKey] = value.map((item) => sanitizeObject(item, options));
|
|
490
|
-
} else if (typeof value === "object") {
|
|
491
|
-
result[sanitizedKey] = sanitizeObjectDepth(value, options, depth + 1);
|
|
492
|
-
} else {
|
|
493
|
-
result[sanitizedKey] = value;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
return result;
|
|
497
|
-
}
|
|
498
|
-
function createSanitizer(options = {}) {
|
|
499
|
-
return (req, _res, next) => {
|
|
500
|
-
try {
|
|
501
|
-
if (req.body && typeof req.body === "object") {
|
|
502
|
-
req.body = sanitizeObject(req.body, options);
|
|
503
|
-
}
|
|
504
|
-
if (req.query && typeof req.query === "object") {
|
|
505
|
-
const sanitizedQuery = sanitizeObject(req.query, options);
|
|
506
|
-
Object.defineProperty(req, "query", { value: sanitizedQuery, writable: true, configurable: true });
|
|
507
|
-
}
|
|
508
|
-
if (req.params && typeof req.params === "object") {
|
|
509
|
-
const sanitizedParams = sanitizeObject(req.params, options);
|
|
510
|
-
Object.defineProperty(req, "params", { value: sanitizedParams, writable: true, configurable: true });
|
|
511
|
-
}
|
|
512
|
-
next();
|
|
513
|
-
} catch (err) {
|
|
514
|
-
next(err);
|
|
515
|
-
}
|
|
516
|
-
};
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
// src/sanitizers/nosql.ts
|
|
520
|
-
function isDangerousNoSqlKey(key) {
|
|
521
|
-
return NOSQL_DANGEROUS_KEYS.has(key);
|
|
522
|
-
}
|
|
523
|
-
function detectNoSqlInjection(obj, maxDepth = 10) {
|
|
524
|
-
if (maxDepth <= 0) return false;
|
|
525
|
-
if (obj === null || typeof obj !== "object") return false;
|
|
526
|
-
if (Array.isArray(obj)) {
|
|
527
|
-
return obj.some((item) => detectNoSqlInjection(item, maxDepth - 1));
|
|
528
|
-
}
|
|
529
|
-
for (const key of Object.keys(obj)) {
|
|
530
|
-
if (isDangerousNoSqlKey(key)) {
|
|
531
|
-
return true;
|
|
532
|
-
}
|
|
533
|
-
const value = obj[key];
|
|
534
|
-
if (typeof value === "object" && value !== null) {
|
|
535
|
-
if (detectNoSqlInjection(value, maxDepth - 1)) {
|
|
536
|
-
return true;
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
return false;
|
|
541
|
-
}
|
|
542
|
-
function getDangerousOperators() {
|
|
543
|
-
return Array.from(NOSQL_DANGEROUS_KEYS);
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
// src/sanitizers/prototype.ts
|
|
547
|
-
function isDangerousProtoKey(key) {
|
|
548
|
-
return DANGEROUS_PROTO_KEYS.has(key.toLowerCase());
|
|
549
|
-
}
|
|
550
|
-
function detectPrototypePollution(obj, maxDepth = 10) {
|
|
551
|
-
if (maxDepth <= 0) return false;
|
|
552
|
-
if (obj === null || typeof obj !== "object") return false;
|
|
553
|
-
if (Array.isArray(obj)) {
|
|
554
|
-
return obj.some((item) => detectPrototypePollution(item, maxDepth - 1));
|
|
555
|
-
}
|
|
556
|
-
for (const key of Object.keys(obj)) {
|
|
557
|
-
if (DANGEROUS_PROTO_KEYS.has(key.toLowerCase())) {
|
|
558
|
-
return true;
|
|
559
|
-
}
|
|
560
|
-
const value = obj[key];
|
|
561
|
-
if (typeof value === "object" && value !== null) {
|
|
562
|
-
if (detectPrototypePollution(value, maxDepth - 1)) {
|
|
563
|
-
return true;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
return false;
|
|
568
|
-
}
|
|
569
|
-
function getDangerousProtoKeys() {
|
|
570
|
-
return Array.from(DANGEROUS_PROTO_KEYS);
|
|
571
|
-
}
|
|
572
|
-
|
|
573
432
|
// src/sanitizers/ssti.ts
|
|
574
433
|
var SSTI_DETECT_PATTERNS = [
|
|
575
434
|
/** Jinja2 / Twig / Nunjucks: {{ ... }} */
|
|
@@ -732,6 +591,214 @@ function detectXxe(input) {
|
|
|
732
591
|
return false;
|
|
733
592
|
}
|
|
734
593
|
|
|
594
|
+
// src/sanitizers/sanitize.ts
|
|
595
|
+
function sanitizeString(value, options = {}) {
|
|
596
|
+
if (typeof value !== "string") return value;
|
|
597
|
+
const maxSize = options.maxSize ?? INPUT.DEFAULT_MAX_SIZE;
|
|
598
|
+
if (value.length > maxSize) {
|
|
599
|
+
throw new InputTooLargeError(maxSize, value.length);
|
|
600
|
+
}
|
|
601
|
+
const reject = options.mode === "reject";
|
|
602
|
+
let result = value;
|
|
603
|
+
if (options.sql !== false) {
|
|
604
|
+
if (reject) {
|
|
605
|
+
if (detectSql(result)) {
|
|
606
|
+
throw new SecurityThreatError("sql_injection", "SQL pattern detected in input");
|
|
607
|
+
}
|
|
608
|
+
} else {
|
|
609
|
+
result = sanitizeSql(result);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
if (options.path !== false) {
|
|
613
|
+
result = sanitizePath(result);
|
|
614
|
+
}
|
|
615
|
+
if (options.command !== false) {
|
|
616
|
+
if (reject) {
|
|
617
|
+
if (detectCommandInjection(result)) {
|
|
618
|
+
throw new SecurityThreatError("command_injection", "Shell metacharacter detected in input");
|
|
619
|
+
}
|
|
620
|
+
} else {
|
|
621
|
+
result = sanitizeCommand(result);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
if (options.xss !== false) {
|
|
625
|
+
result = sanitizeXss(result, false, options.htmlEncode ?? false);
|
|
626
|
+
}
|
|
627
|
+
return result;
|
|
628
|
+
}
|
|
629
|
+
function sanitizeObject(obj, options = {}) {
|
|
630
|
+
if (obj === null || obj === void 0) return obj;
|
|
631
|
+
if (typeof obj === "string") return sanitizeString(obj, options);
|
|
632
|
+
if (typeof obj !== "object") return obj;
|
|
633
|
+
if (Array.isArray(obj)) return obj.map((item) => sanitizeObject(item, options));
|
|
634
|
+
const result = sanitizeObjectDepth(obj, options, 0);
|
|
635
|
+
return options.freeze ? Object.freeze(result) : result;
|
|
636
|
+
}
|
|
637
|
+
function sanitizeObjectDepth(obj, options, depth) {
|
|
638
|
+
if (depth >= INPUT.MAX_RECURSION_DEPTH) return obj;
|
|
639
|
+
const result = {};
|
|
640
|
+
for (const key of Object.keys(obj)) {
|
|
641
|
+
if (options.proto !== false && DANGEROUS_PROTO_KEYS.has(key.toLowerCase())) {
|
|
642
|
+
continue;
|
|
643
|
+
}
|
|
644
|
+
if (options.nosql !== false && NOSQL_DANGEROUS_KEYS.has(key)) {
|
|
645
|
+
continue;
|
|
646
|
+
}
|
|
647
|
+
const sanitizedKey = sanitizeString(key, options);
|
|
648
|
+
const value = obj[key];
|
|
649
|
+
if (value === null || value === void 0) {
|
|
650
|
+
result[sanitizedKey] = value;
|
|
651
|
+
} else if (typeof value === "string") {
|
|
652
|
+
result[sanitizedKey] = sanitizeString(value, options);
|
|
653
|
+
} else if (Array.isArray(value)) {
|
|
654
|
+
result[sanitizedKey] = value.map((item) => sanitizeObject(item, options));
|
|
655
|
+
} else if (typeof value === "object") {
|
|
656
|
+
result[sanitizedKey] = sanitizeObjectDepth(value, options, depth + 1);
|
|
657
|
+
} else {
|
|
658
|
+
result[sanitizedKey] = value;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
return result;
|
|
662
|
+
}
|
|
663
|
+
function scanThreats(data, depth = 0) {
|
|
664
|
+
if (depth > INPUT.MAX_RECURSION_DEPTH) return null;
|
|
665
|
+
if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
666
|
+
for (const key of Object.keys(data)) {
|
|
667
|
+
const lower = key.toLowerCase();
|
|
668
|
+
if (DANGEROUS_PROTO_KEYS.has(lower)) {
|
|
669
|
+
return { vector: "prototype", rule: "prototype/match", matchedPattern: key };
|
|
670
|
+
}
|
|
671
|
+
if (NOSQL_DANGEROUS_KEYS.has(key)) {
|
|
672
|
+
return { vector: "nosql", rule: "nosql/match", matchedPattern: key };
|
|
673
|
+
}
|
|
674
|
+
const inner = scanThreats(data[key], depth + 1);
|
|
675
|
+
if (inner) return inner;
|
|
676
|
+
}
|
|
677
|
+
return null;
|
|
678
|
+
}
|
|
679
|
+
if (Array.isArray(data)) {
|
|
680
|
+
for (const item of data) {
|
|
681
|
+
const inner = scanThreats(item, depth + 1);
|
|
682
|
+
if (inner) return inner;
|
|
683
|
+
}
|
|
684
|
+
return null;
|
|
685
|
+
}
|
|
686
|
+
if (typeof data !== "string") return null;
|
|
687
|
+
const sample = data.slice(0, 80);
|
|
688
|
+
if (detectXss(data)) {
|
|
689
|
+
return { vector: "xss", rule: "xss/match", matchedPattern: sample };
|
|
690
|
+
}
|
|
691
|
+
if (detectSsti(data)) {
|
|
692
|
+
return { vector: "ssti", rule: "ssti/match", matchedPattern: sample };
|
|
693
|
+
}
|
|
694
|
+
if (detectXxe(data)) {
|
|
695
|
+
return { vector: "xxe", rule: "xxe/match", matchedPattern: sample };
|
|
696
|
+
}
|
|
697
|
+
if (detectSql(data)) {
|
|
698
|
+
return { vector: "sql", rule: "sql/match", matchedPattern: sample };
|
|
699
|
+
}
|
|
700
|
+
if (detectPathTraversal(data)) {
|
|
701
|
+
return { vector: "path", rule: "path/match", matchedPattern: sample };
|
|
702
|
+
}
|
|
703
|
+
if (detectCommandInjection(data)) {
|
|
704
|
+
return { vector: "command", rule: "command/match", matchedPattern: sample };
|
|
705
|
+
}
|
|
706
|
+
return null;
|
|
707
|
+
}
|
|
708
|
+
function createSanitizer(options = {}) {
|
|
709
|
+
return (req, res, next) => {
|
|
710
|
+
try {
|
|
711
|
+
if (options.block) {
|
|
712
|
+
const hit = scanThreats(req.body) || scanThreats(req.query) || scanThreats(req.params) || scanThreats(req.path);
|
|
713
|
+
if (hit) {
|
|
714
|
+
req.__arcis = {
|
|
715
|
+
vector: hit.vector,
|
|
716
|
+
rule: hit.rule,
|
|
717
|
+
severity: "high",
|
|
718
|
+
matchedPattern: hit.matchedPattern,
|
|
719
|
+
reason: `${hit.vector} pattern detected in request`,
|
|
720
|
+
decision: "deny"
|
|
721
|
+
};
|
|
722
|
+
res.status(403).json({
|
|
723
|
+
error: "Request blocked for security reasons",
|
|
724
|
+
code: "SECURITY_THREAT",
|
|
725
|
+
vector: hit.vector
|
|
726
|
+
});
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
if (req.body && typeof req.body === "object") {
|
|
731
|
+
req.body = sanitizeObject(req.body, options);
|
|
732
|
+
}
|
|
733
|
+
if (req.query && typeof req.query === "object") {
|
|
734
|
+
const sanitizedQuery = sanitizeObject(req.query, options);
|
|
735
|
+
Object.defineProperty(req, "query", { value: sanitizedQuery, writable: true, configurable: true });
|
|
736
|
+
}
|
|
737
|
+
if (req.params && typeof req.params === "object") {
|
|
738
|
+
const sanitizedParams = sanitizeObject(req.params, options);
|
|
739
|
+
Object.defineProperty(req, "params", { value: sanitizedParams, writable: true, configurable: true });
|
|
740
|
+
}
|
|
741
|
+
next();
|
|
742
|
+
} catch (err) {
|
|
743
|
+
next(err);
|
|
744
|
+
}
|
|
745
|
+
};
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
// src/sanitizers/nosql.ts
|
|
749
|
+
function isDangerousNoSqlKey(key) {
|
|
750
|
+
return NOSQL_DANGEROUS_KEYS.has(key);
|
|
751
|
+
}
|
|
752
|
+
function detectNoSqlInjection(obj, maxDepth = 10) {
|
|
753
|
+
if (maxDepth <= 0) return false;
|
|
754
|
+
if (obj === null || typeof obj !== "object") return false;
|
|
755
|
+
if (Array.isArray(obj)) {
|
|
756
|
+
return obj.some((item) => detectNoSqlInjection(item, maxDepth - 1));
|
|
757
|
+
}
|
|
758
|
+
for (const key of Object.keys(obj)) {
|
|
759
|
+
if (isDangerousNoSqlKey(key)) {
|
|
760
|
+
return true;
|
|
761
|
+
}
|
|
762
|
+
const value = obj[key];
|
|
763
|
+
if (typeof value === "object" && value !== null) {
|
|
764
|
+
if (detectNoSqlInjection(value, maxDepth - 1)) {
|
|
765
|
+
return true;
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
return false;
|
|
770
|
+
}
|
|
771
|
+
function getDangerousOperators() {
|
|
772
|
+
return Array.from(NOSQL_DANGEROUS_KEYS);
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
// src/sanitizers/prototype.ts
|
|
776
|
+
function isDangerousProtoKey(key) {
|
|
777
|
+
return DANGEROUS_PROTO_KEYS.has(key.toLowerCase());
|
|
778
|
+
}
|
|
779
|
+
function detectPrototypePollution(obj, maxDepth = 10) {
|
|
780
|
+
if (maxDepth <= 0) return false;
|
|
781
|
+
if (obj === null || typeof obj !== "object") return false;
|
|
782
|
+
if (Array.isArray(obj)) {
|
|
783
|
+
return obj.some((item) => detectPrototypePollution(item, maxDepth - 1));
|
|
784
|
+
}
|
|
785
|
+
for (const key of Object.keys(obj)) {
|
|
786
|
+
if (DANGEROUS_PROTO_KEYS.has(key.toLowerCase())) {
|
|
787
|
+
return true;
|
|
788
|
+
}
|
|
789
|
+
const value = obj[key];
|
|
790
|
+
if (typeof value === "object" && value !== null) {
|
|
791
|
+
if (detectPrototypePollution(value, maxDepth - 1)) {
|
|
792
|
+
return true;
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
return false;
|
|
797
|
+
}
|
|
798
|
+
function getDangerousProtoKeys() {
|
|
799
|
+
return Array.from(DANGEROUS_PROTO_KEYS);
|
|
800
|
+
}
|
|
801
|
+
|
|
735
802
|
// src/sanitizers/jsonp.ts
|
|
736
803
|
var SAFE_CALLBACK_PATTERN = /^[a-zA-Z_$][a-zA-Z0-9_$.]*$/;
|
|
737
804
|
var DANGEROUS_CALLBACK_PATTERNS = [
|
|
@@ -1039,6 +1106,6 @@ function detectLdapInjection(input) {
|
|
|
1039
1106
|
return LDAP_DETECT_PATTERN.test(input) || LDAP_INJECTION_PATTERN.test(input);
|
|
1040
1107
|
}
|
|
1041
1108
|
|
|
1042
|
-
export { createSanitizer, detectCommandInjection, detectHeaderInjection, detectJsonpInjection, detectLdapInjection, detectNoSqlInjection, detectPathTraversal, detectPii, detectPrototypePollution, detectSql, detectSsti, detectXss, detectXxe, encodeForAttribute, encodeForCss, encodeForHtml, encodeForJs, encodeForUrl, encodeHtmlEntities, getDangerousOperators, getDangerousProtoKeys, isDangerousNoSqlKey, isDangerousProtoKey, isPlainObject, redactObjectPii, redactPii, sanitizeCommand, sanitizeHeaderValue, sanitizeHeaders, sanitizeJsonpCallback, sanitizeLdapDn, sanitizeLdapFilter, sanitizeObject, sanitizePath, sanitizeSql, sanitizeSsti, sanitizeString, sanitizeXss, sanitizeXxe, scanObjectPii, scanPii };
|
|
1109
|
+
export { createSanitizer, detectCommandInjection, detectHeaderInjection, detectJsonpInjection, detectLdapInjection, detectNoSqlInjection, detectPathTraversal, detectPii, detectPrototypePollution, detectSql, detectSsti, detectXss, detectXxe, encodeForAttribute, encodeForCss, encodeForHtml, encodeForJs, encodeForUrl, encodeHtmlEntities, getDangerousOperators, getDangerousProtoKeys, isDangerousNoSqlKey, isDangerousProtoKey, isPlainObject, redactObjectPii, redactPii, sanitizeCommand, sanitizeHeaderValue, sanitizeHeaders, sanitizeJsonpCallback, sanitizeLdapDn, sanitizeLdapFilter, sanitizeObject, sanitizePath, sanitizeSql, sanitizeSsti, sanitizeString, sanitizeXss, sanitizeXxe, scanObjectPii, scanPii, scanThreats };
|
|
1043
1110
|
//# sourceMappingURL=index.mjs.map
|
|
1044
1111
|
//# sourceMappingURL=index.mjs.map
|