sanitize.js 969 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * Simple sanitization. It is not intended to sanitize
  3. * malicious element values.
  4. *
  5. * character | escaped
  6. * < &lt;
  7. * > &gt;
  8. * ( &#40;
  9. * ) &#41;
  10. * # &#35;
  11. * & &amp;
  12. * " &quot;
  13. * ' &apos;
  14. */
  15. var chars = {
  16. '&': '&amp;',
  17. '#': '&#35;',
  18. '<': '&lt;',
  19. '>': '&gt;',
  20. '(': '&#40;',
  21. ')': '&#41;',
  22. '"': '&quot;',
  23. "'": '&apos;'
  24. };
  25. function escapeRegExp(string) {
  26. return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
  27. }
  28. exports.sanitize = function sanitize(value, reverse) {
  29. if (typeof value !== 'string') {
  30. return value;
  31. }
  32. Object.keys(chars).forEach(function(key) {
  33. if (reverse) {
  34. value = value.replace(new RegExp(escapeRegExp(chars[key]), 'g'), key);
  35. } else {
  36. value = value.replace(new RegExp(escapeRegExp(key), 'g'), chars[key]);
  37. }
  38. });
  39. return value;
  40. }