https://codeql.github.com/codeql-standard-libraries/javascript/semmle/javascript/security/dataflow/DomBasedXss.qll/module.DomBasedXss.html

    Taint-tracking configuration for DOM-based XSS

    HtmlInjectionConfiguration
    JQueryHtmlOrSelectorInjectionConfiguration

    semmle.javascript.security.dataflow.DomBasedXss
    =>semmle.javascript.security.dataflow.DomBasedXssCustomizations
    =>semmle.javascript.security.dataflow.Xss::DomBasedXss

    semmle.javascript.security.dataflow.DomBasedXss HtmlInjectionConfiguration

    1. class HtmlInjectionConfiguration extends TaintTracking::Configuration {
    2. HtmlInjectionConfiguration() { this = "HtmlInjection" }
    3. override predicate isSource(DataFlow::Node source) { source instanceof Source }
    4. override predicate isSink(DataFlow::Node sink) {
    5. sink instanceof Sink and
    6. not sink instanceof JQueryHtmlOrSelectorSink // Handled by JQueryHtmlOrSelectorInjectionConfiguration below
    7. }
    8. override predicate isSanitizer(DataFlow::Node node) {
    9. super.isSanitizer(node)
    10. or
    11. node instanceof Sanitizer
    12. }
    13. override predicate isSanitizerGuard(TaintTracking::SanitizerGuardNode guard) {
    14. guard instanceof SanitizerGuard
    15. }
    16. override predicate isSanitizerEdge(DataFlow::Node pred, DataFlow::Node succ) {
    17. DomBasedXss::isOptionallySanitizedEdge(pred, succ)
    18. }
    19. }

    semmle.javascript.security.dataflow.DomBasedXssCustomizations
    与RemoteFlowSource与并集

    1. class RemoteFlowSourceAsSource extends Source {
    2. RemoteFlowSourceAsSource() { this instanceof RemoteFlowSource }

    semmle.javascript.security.dataflow.Xss::DomBasedXss

    LibrarySink
    JQueryHtmlOrSelectorSink
    DomSink
    HtmlParserSink
    DangerouslySetInnerHtmlSink
    TooltipSink
    EmailHtmlBodySink

    semmle.javascript.security.dataflow.DOM
    https://codeql.github.com/codeql-standard-libraries/javascript/semmle/javascript/DOM.qll/module.DOM$DOM.html