Skip to content

Commit 81787a1

Browse files
committed
Add QL docs to helmet model
1 parent e84dda4 commit 81787a1

File tree

1 file changed

+19
-5
lines changed
  • javascript/ql/lib/semmle/javascript/frameworks/helmet

1 file changed

+19
-5
lines changed

javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.qll

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,38 @@
44

55
import javascript
66

7+
/**
8+
* A write to a property of a route handler from the "helmet" module.
9+
*/
710
class HelmetProperty extends DataFlow::Node instanceof DataFlow::PropWrite {
811
ExpressLibraries::HelmetRouteHandler helmet;
912

1013
HelmetProperty() {
1114
this = helmet.(DataFlow::CallNode).getAnArgument().getALocalSource().getAPropertyWrite()
1215
}
1316

17+
/**
18+
* Gets the route handler associated to this property.
19+
*/
1420
ExpressLibraries::HelmetRouteHandler getHelmet() { result = helmet }
1521

22+
/**
23+
* Gets the boolean value of this property, if it may evaluate to a `Boolean`.
24+
*/
1625
predicate isFalse() { DataFlow::PropWrite.super.getRhs().mayHaveBooleanValue(false) }
1726

27+
/**
28+
* Gets the name of the `HelmetProperty`.
29+
*/
1830
string getName() { result = DataFlow::PropWrite.super.getPropertyName() }
1931

20-
predicate isImportantSecuritySetting() {
21-
// read from data extensions to allow enforcing custom settings
22-
// defaults are located in javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml
23-
requiredHelmetSecuritySetting(this.getName())
24-
}
32+
/**
33+
* read from data extensions to allow enforcing custom settings
34+
*/
35+
predicate isImportantSecuritySetting() { requiredHelmetSecuritySetting(this.getName()) }
2536
}
2637

38+
/**
39+
* defaults are located in `javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml`
40+
*/
2741
extensible predicate requiredHelmetSecuritySetting(string name);

0 commit comments

Comments
 (0)