xss.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import { RehypeSanitizeOption } from '~/interfaces/rehype';
  2. import { Xss } from '~/services/xss';
  3. import type { XssOptionConfig } from '~/services/xss/xssOption';
  4. import XssOption from '~/services/xss/xssOption';
  5. import loggerFactory from '~/utils/logger'; // eslint-disable-line no-unused-vars
  6. import { configManager } from './config-manager';
  7. const logger = loggerFactory('growi:service:XssSerivce');
  8. export const xss = (() => {
  9. const options: XssOptionConfig = {
  10. isEnabledXssPrevention: configManager.getConfig('markdown', 'markdown:rehypeSanitize:isEnabledPrevention'),
  11. xssOption: configManager.getConfig('markdown', 'markdown:rehypeSanitize:option') as RehypeSanitizeOption,
  12. tagWhitelist: configManager.getConfig('markdown', 'markdown:rehypeSanitize:tagNames'),
  13. attrWhitelist: configManager.getConfig('markdown', 'markdown:rehypeSanitize:attributes'),
  14. };
  15. const xssOption = new XssOption(options);
  16. return new Xss(xssOption);
  17. })();
  18. export const xssForRevisionId = (() => {
  19. const options: XssOptionConfig = {
  20. isEnabledXssPrevention: true,
  21. xssOption: RehypeSanitizeOption.CUSTOM,
  22. tagWhitelist: [],
  23. attrWhitelist: {},
  24. };
  25. const xssOption = new XssOption(options);
  26. return new Xss(xssOption);
  27. })();