mirror of
https://github.com/github/codeql.git
synced 2026-04-27 09:45:15 +02:00
only flag React elements in ClientSideUrlRedirect if it's a HTML element, or known link class
This commit is contained in:
@@ -65,6 +65,12 @@ class JSXElement extends JSXNode {
|
||||
}
|
||||
|
||||
override string getAPrimaryQlClass() { result = "JSXElement" }
|
||||
|
||||
/**
|
||||
* Holds if this JSX element is a HTML element.
|
||||
* That is, the name starts with a lowercase letter.
|
||||
*/
|
||||
predicate isHTMLElement() { getName().regexpMatch("[a-z].*") }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -173,7 +173,10 @@ module ClientSideUrlRedirect {
|
||||
class ReactAttributeWriteUrlSink extends ScriptUrlSink {
|
||||
ReactAttributeWriteUrlSink() {
|
||||
exists(JSXAttribute attr |
|
||||
attr.getName() = DOM::getAPropertyNameInterpretedAsJavaScriptUrl()
|
||||
attr.getName() = DOM::getAPropertyNameInterpretedAsJavaScriptUrl() and
|
||||
attr.getElement().isHTMLElement()
|
||||
or
|
||||
DataFlow::moduleImport("next/link").flowsToExpr(attr.getElement().getNameExpr())
|
||||
|
|
||||
this = attr.getValue().flow()
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user