@contrast/assess 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/lib/dataflow/propagation/index.js +6 -7
  2. package/lib/dataflow/propagation/install/contrast-methods/index.js +1 -0
  3. package/lib/dataflow/propagation/install/contrast-methods/string.js +56 -0
  4. package/lib/dataflow/propagation/install/string/index.js +1 -0
  5. package/lib/dataflow/propagation/install/string/split.js +108 -0
  6. package/lib/dataflow/sources/index.js +0 -1
  7. package/lib/dataflow/sources/install/http.js +9 -6
  8. package/lib/index.js +7 -2
  9. package/lib/response-scanning/handlers/index.js +274 -0
  10. package/lib/response-scanning/handlers/utils.js +394 -0
  11. package/lib/response-scanning/index.js +36 -0
  12. package/lib/response-scanning/install/http.js +119 -0
  13. package/package.json +3 -3
  14. package/coverage/lcov-report/base.css +0 -224
  15. package/coverage/lcov-report/block-navigation.js +0 -87
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +0 -266
  18. package/coverage/lcov-report/lib/dataflow/common.js.html +0 -154
  19. package/coverage/lcov-report/lib/dataflow/event-factory.js.html +0 -598
  20. package/coverage/lcov-report/lib/dataflow/index.html +0 -191
  21. package/coverage/lcov-report/lib/dataflow/index.js.html +0 -190
  22. package/coverage/lcov-report/lib/dataflow/propagation/common.js.html +0 -145
  23. package/coverage/lcov-report/lib/dataflow/propagation/index.html +0 -131
  24. package/coverage/lcov-report/lib/dataflow/propagation/index.js.html +0 -190
  25. package/coverage/lcov-report/lib/dataflow/propagation/install/contrast-methods/index.html +0 -131
  26. package/coverage/lcov-report/lib/dataflow/propagation/install/contrast-methods/index.js.html +0 -184
  27. package/coverage/lcov-report/lib/dataflow/propagation/install/contrast-methods/plus.js.html +0 -397
  28. package/coverage/lcov-report/lib/dataflow/propagation/install/string/concat.js.html +0 -478
  29. package/coverage/lcov-report/lib/dataflow/propagation/install/string/index.html +0 -176
  30. package/coverage/lcov-report/lib/dataflow/propagation/install/string/index.js.html +0 -202
  31. package/coverage/lcov-report/lib/dataflow/propagation/install/string/replace.js.html +0 -496
  32. package/coverage/lcov-report/lib/dataflow/propagation/install/string/substring.js.html +0 -415
  33. package/coverage/lcov-report/lib/dataflow/propagation/install/string/trim.js.html +0 -403
  34. package/coverage/lcov-report/lib/dataflow/signatures.js.html +0 -5923
  35. package/coverage/lcov-report/lib/dataflow/sinks/common.js.html +0 -145
  36. package/coverage/lcov-report/lib/dataflow/sinks/index.html +0 -131
  37. package/coverage/lcov-report/lib/dataflow/sinks/index.js.html +0 -211
  38. package/coverage/lcov-report/lib/dataflow/sinks/install/fastify/index.html +0 -146
  39. package/coverage/lcov-report/lib/dataflow/sinks/install/fastify/index.js.html +0 -172
  40. package/coverage/lcov-report/lib/dataflow/sinks/install/fastify/unvalidated-redirect.js.html +0 -319
  41. package/coverage/lcov-report/lib/dataflow/sinks/install/fastify/xss.js.html +0 -721
  42. package/coverage/lcov-report/lib/dataflow/sinks/install/http.js.html +0 -340
  43. package/coverage/lcov-report/lib/dataflow/sinks/install/index.html +0 -116
  44. package/coverage/lcov-report/lib/dataflow/sources/common.js.html +0 -145
  45. package/coverage/lcov-report/lib/dataflow/sources/index.html +0 -131
  46. package/coverage/lcov-report/lib/dataflow/sources/index.js.html +0 -226
  47. package/coverage/lcov-report/lib/dataflow/sources/install/fastify.js.html +0 -379
  48. package/coverage/lcov-report/lib/dataflow/sources/install/http.js.html +0 -502
  49. package/coverage/lcov-report/lib/dataflow/sources/install/index.html +0 -146
  50. package/coverage/lcov-report/lib/dataflow/sources/install/qs.js.html +0 -322
  51. package/coverage/lcov-report/lib/dataflow/tag-utils.js.html +0 -418
  52. package/coverage/lcov-report/lib/dataflow/tracker.js.html +0 -466
  53. package/coverage/lcov-report/lib/dataflow/utils/index.html +0 -116
  54. package/coverage/lcov-report/lib/dataflow/utils/is-vulnerable.js.html +0 -424
  55. package/coverage/lcov-report/lib/index.html +0 -116
  56. package/coverage/lcov-report/lib/index.js.html +0 -193
  57. package/coverage/lcov-report/prettify.css +0 -1
  58. package/coverage/lcov-report/prettify.js +0 -2
  59. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  60. package/coverage/lcov-report/sorter.js +0 -196
  61. package/coverage/lcov.info +0 -4856
  62. package/coverage/tmp/coverage-9548-1675168551025-0.json +0 -1
  63. package/coverage/tmp/coverage-9551-1675168550963-0.json +0 -1
  64. package/coverage/tmp/coverage-9552-1675168550969-0.json +0 -1
  65. package/coverage/tmp/coverage-9553-1675168550970-0.json +0 -1
  66. package/coverage/tmp/coverage-9554-1675168550962-0.json +0 -1
  67. package/coverage/tmp/coverage-9555-1675168550965-0.json +0 -1
  68. package/coverage/tmp/coverage-9556-1675168550964-0.json +0 -1
  69. package/coverage/tmp/coverage-9557-1675168550969-0.json +0 -1
  70. package/coverage/tmp/coverage-9558-1675168550964-0.json +0 -1
  71. package/coverage/tmp/coverage-9559-1675168550971-0.json +0 -1
  72. package/lib/dataflow/sources/install/qs.js +0 -88
@@ -1,721 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for lib/dataflow/sinks/install/fastify/xss.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">lib/dataflow/sinks/install/fastify</a> xss.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>212/212</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">96.66% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>29/30</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/12</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>212/212</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
279
- <span class="cline-any cline-yes">3x</span>
280
- <span class="cline-any cline-yes">3x</span>
281
- <span class="cline-any cline-yes">3x</span>
282
- <span class="cline-any cline-yes">3x</span>
283
- <span class="cline-any cline-yes">3x</span>
284
- <span class="cline-any cline-yes">3x</span>
285
- <span class="cline-any cline-yes">3x</span>
286
- <span class="cline-any cline-yes">3x</span>
287
- <span class="cline-any cline-yes">3x</span>
288
- <span class="cline-any cline-yes">3x</span>
289
- <span class="cline-any cline-yes">3x</span>
290
- <span class="cline-any cline-yes">3x</span>
291
- <span class="cline-any cline-yes">3x</span>
292
- <span class="cline-any cline-yes">3x</span>
293
- <span class="cline-any cline-yes">3x</span>
294
- <span class="cline-any cline-yes">3x</span>
295
- <span class="cline-any cline-yes">3x</span>
296
- <span class="cline-any cline-yes">3x</span>
297
- <span class="cline-any cline-yes">3x</span>
298
- <span class="cline-any cline-yes">3x</span>
299
- <span class="cline-any cline-yes">3x</span>
300
- <span class="cline-any cline-yes">3x</span>
301
- <span class="cline-any cline-yes">3x</span>
302
- <span class="cline-any cline-yes">3x</span>
303
- <span class="cline-any cline-yes">3x</span>
304
- <span class="cline-any cline-yes">3x</span>
305
- <span class="cline-any cline-yes">3x</span>
306
- <span class="cline-any cline-yes">22x</span>
307
- <span class="cline-any cline-yes">22x</span>
308
- <span class="cline-any cline-yes">22x</span>
309
- <span class="cline-any cline-yes">22x</span>
310
- <span class="cline-any cline-yes">22x</span>
311
- <span class="cline-any cline-yes">22x</span>
312
- <span class="cline-any cline-yes">22x</span>
313
- <span class="cline-any cline-yes">22x</span>
314
- <span class="cline-any cline-yes">22x</span>
315
- <span class="cline-any cline-yes">22x</span>
316
- <span class="cline-any cline-yes">22x</span>
317
- <span class="cline-any cline-yes">22x</span>
318
- <span class="cline-any cline-yes">22x</span>
319
- <span class="cline-any cline-yes">22x</span>
320
- <span class="cline-any cline-yes">22x</span>
321
- <span class="cline-any cline-yes">22x</span>
322
- <span class="cline-any cline-yes">22x</span>
323
- <span class="cline-any cline-yes">22x</span>
324
- <span class="cline-any cline-yes">22x</span>
325
- <span class="cline-any cline-yes">22x</span>
326
- <span class="cline-any cline-yes">22x</span>
327
- <span class="cline-any cline-yes">22x</span>
328
- <span class="cline-any cline-yes">22x</span>
329
- <span class="cline-any cline-yes">22x</span>
330
- <span class="cline-any cline-yes">22x</span>
331
- <span class="cline-any cline-yes">22x</span>
332
- <span class="cline-any cline-yes">22x</span>
333
- <span class="cline-any cline-yes">22x</span>
334
- <span class="cline-any cline-yes">22x</span>
335
- <span class="cline-any cline-yes">22x</span>
336
- <span class="cline-any cline-yes">22x</span>
337
- <span class="cline-any cline-yes">22x</span>
338
- <span class="cline-any cline-yes">22x</span>
339
- <span class="cline-any cline-yes">10x</span>
340
- <span class="cline-any cline-yes">10x</span>
341
- <span class="cline-any cline-yes">10x</span>
342
- <span class="cline-any cline-yes">10x</span>
343
- <span class="cline-any cline-yes">10x</span>
344
- <span class="cline-any cline-yes">10x</span>
345
- <span class="cline-any cline-yes">4x</span>
346
- <span class="cline-any cline-yes">4x</span>
347
- <span class="cline-any cline-yes">4x</span>
348
- <span class="cline-any cline-yes">3x</span>
349
- <span class="cline-any cline-yes">4x</span>
350
- <span class="cline-any cline-yes">4x</span>
351
- <span class="cline-any cline-yes">2x</span>
352
- <span class="cline-any cline-yes">2x</span>
353
- <span class="cline-any cline-yes">4x</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-yes">1x</span>
360
- <span class="cline-any cline-yes">1x</span>
361
- <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">1x</span>
363
- <span class="cline-any cline-yes">1x</span>
364
- <span class="cline-any cline-yes">1x</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">10x</span>
367
- <span class="cline-any cline-yes">10x</span>
368
- <span class="cline-any cline-yes">22x</span>
369
- <span class="cline-any cline-yes">22x</span>
370
- <span class="cline-any cline-yes">22x</span>
371
- <span class="cline-any cline-yes">22x</span>
372
- <span class="cline-any cline-yes">22x</span>
373
- <span class="cline-any cline-yes">22x</span>
374
- <span class="cline-any cline-yes">22x</span>
375
- <span class="cline-any cline-yes">22x</span>
376
- <span class="cline-any cline-yes">22x</span>
377
- <span class="cline-any cline-yes">10x</span>
378
- <span class="cline-any cline-yes">10x</span>
379
- <span class="cline-any cline-yes">10x</span>
380
- <span class="cline-any cline-yes">10x</span>
381
- <span class="cline-any cline-yes">6x</span>
382
- <span class="cline-any cline-yes">6x</span>
383
- <span class="cline-any cline-yes">5x</span>
384
- <span class="cline-any cline-yes">5x</span>
385
- <span class="cline-any cline-yes">5x</span>
386
- <span class="cline-any cline-yes">5x</span>
387
- <span class="cline-any cline-yes">5x</span>
388
- <span class="cline-any cline-yes">5x</span>
389
- <span class="cline-any cline-yes">6x</span>
390
- <span class="cline-any cline-yes">1x</span>
391
- <span class="cline-any cline-yes">1x</span>
392
- <span class="cline-any cline-yes">4x</span>
393
- <span class="cline-any cline-yes">4x</span>
394
- <span class="cline-any cline-yes">6x</span>
395
- <span class="cline-any cline-yes">2x</span>
396
- <span class="cline-any cline-yes">2x</span>
397
- <span class="cline-any cline-yes">6x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-yes">1x</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-yes">1x</span>
406
- <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-yes">1x</span>
409
- <span class="cline-any cline-yes">1x</span>
410
- <span class="cline-any cline-yes">1x</span>
411
- <span class="cline-any cline-yes">1x</span>
412
- <span class="cline-any cline-yes">1x</span>
413
- <span class="cline-any cline-yes">1x</span>
414
- <span class="cline-any cline-yes">10x</span>
415
- <span class="cline-any cline-yes">10x</span>
416
- <span class="cline-any cline-yes">22x</span>
417
- <span class="cline-any cline-yes">22x</span>
418
- <span class="cline-any cline-yes">22x</span>
419
- <span class="cline-any cline-yes">22x</span>
420
- <span class="cline-any cline-yes">22x</span>
421
- <span class="cline-any cline-yes">22x</span>
422
- <span class="cline-any cline-yes">22x</span>
423
- <span class="cline-any cline-yes">22x</span>
424
- <span class="cline-any cline-yes">22x</span>
425
- <span class="cline-any cline-yes">22x</span>
426
- <span class="cline-any cline-yes">13x</span>
427
- <span class="cline-any cline-yes">13x</span>
428
- <span class="cline-any cline-yes">13x</span>
429
- <span class="cline-any cline-yes">13x</span>
430
- <span class="cline-any cline-yes">10x</span>
431
- <span class="cline-any cline-yes">10x</span>
432
- <span class="cline-any cline-yes">10x</span>
433
- <span class="cline-any cline-yes">10x</span>
434
- <span class="cline-any cline-yes">10x</span>
435
- <span class="cline-any cline-yes">10x</span>
436
- <span class="cline-any cline-yes">10x</span>
437
- <span class="cline-any cline-yes">10x</span>
438
- <span class="cline-any cline-yes">13x</span>
439
- <span class="cline-any cline-yes">22x</span>
440
- <span class="cline-any cline-yes">22x</span>
441
- <span class="cline-any cline-yes">22x</span>
442
- <span class="cline-any cline-yes">22x</span>
443
- <span class="cline-any cline-yes">22x</span>
444
- <span class="cline-any cline-yes">22x</span>
445
- <span class="cline-any cline-yes">22x</span>
446
- <span class="cline-any cline-yes">22x</span>
447
- <span class="cline-any cline-yes">22x</span>
448
- <span class="cline-any cline-yes">22x</span>
449
- <span class="cline-any cline-yes">22x</span>
450
- <span class="cline-any cline-yes">2x</span>
451
- <span class="cline-any cline-yes">2x</span>
452
- <span class="cline-any cline-yes">2x</span>
453
- <span class="cline-any cline-yes">2x</span>
454
- <span class="cline-any cline-yes">1x</span>
455
- <span class="cline-any cline-yes">1x</span>
456
- <span class="cline-any cline-yes">2x</span>
457
- <span class="cline-any cline-yes">2x</span>
458
- <span class="cline-any cline-yes">22x</span>
459
- <span class="cline-any cline-yes">22x</span>
460
- <span class="cline-any cline-yes">22x</span>
461
- <span class="cline-any cline-yes">22x</span>
462
- <span class="cline-any cline-yes">22x</span>
463
- <span class="cline-any cline-yes">22x</span>
464
- <span class="cline-any cline-yes">22x</span>
465
- <span class="cline-any cline-yes">13x</span>
466
- <span class="cline-any cline-yes">3x</span>
467
- <span class="cline-any cline-yes">3x</span>
468
- <span class="cline-any cline-yes">3x</span>
469
- <span class="cline-any cline-yes">3x</span>
470
- <span class="cline-any cline-yes">3x</span>
471
- <span class="cline-any cline-yes">3x</span>
472
- <span class="cline-any cline-yes">2x</span>
473
- <span class="cline-any cline-yes">2x</span>
474
- <span class="cline-any cline-yes">3x</span>
475
- <span class="cline-any cline-yes">3x</span>
476
- <span class="cline-any cline-yes">13x</span>
477
- <span class="cline-any cline-yes">22x</span>
478
- <span class="cline-any cline-yes">22x</span>
479
- <span class="cline-any cline-yes">22x</span>
480
- <span class="cline-any cline-yes">13x</span>
481
- <span class="cline-any cline-yes">13x</span>
482
- <span class="cline-any cline-yes">13x</span>
483
- <span class="cline-any cline-yes">13x</span>
484
- <span class="cline-any cline-yes">13x</span>
485
- <span class="cline-any cline-yes">13x</span>
486
- <span class="cline-any cline-yes">22x</span>
487
- <span class="cline-any cline-yes">22x</span>
488
- <span class="cline-any cline-yes">22x</span>
489
- <span class="cline-any cline-yes">3x</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
491
- * Copyright: 2022 Contrast Security, Inc
492
- * Contact: support@contrastsecurity.com
493
- * License: Commercial
494
- &nbsp;
495
- * NOTICE: This Software and the patented inventions embodied within may only be
496
- * used as part of Contrast Security’s commercial offerings. Even though it is
497
- * made available through public repositories, use of this Software is subject to
498
- * the applicable End User Licensing Agreement found at
499
- * https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed
500
- * between Contrast Security and the End User. The Software may not be reverse
501
- * engineered, modified, repackaged, sold, redistributed or otherwise used in a
502
- * way not consistent with the End User License Agreement.
503
- */
504
- &nbsp;
505
- 'use strict';
506
- &nbsp;
507
- const { isString } = require('@contrast/common');
508
- const { patchType } = require('../../common');
509
- const { constants } = require('../../../common.js');
510
- &nbsp;
511
- const isVulnerable = () =&gt; true;
512
- &nbsp;
513
- const KEYS = {
514
- FASTIFY_HANDLER_RESOLVED: 'fastify.xss.handler.resolved',
515
- };
516
- &nbsp;
517
- module.exports = function (core) {
518
- console.log('scopes&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;', core.scopes);
519
- &nbsp;
520
- const {
521
- depHooks,
522
- patcher,
523
- scopes: { sources },
524
- assess: {
525
- dataflow: { tracker },
526
- },
527
- messages,
528
- captureStacktrace,
529
- } = core;
530
- const xss = core.assess.dataflow.sinks.fastify.xss = {};
531
- &nbsp;
532
- const disallowedTags = [
533
- 'alphanumSpaceHyphen',
534
- 'cookie',
535
- 'header',
536
- 'limitedChars',
537
- 'htmlEncoded',
538
- 'sqlEncoded',
539
- 'urlEncoded',
540
- 'weakUrlEncoded',
541
- ];
542
- const requiredTags = ['untrusted'];
543
- &nbsp;
544
- /**
545
- * adds a pre handler for `reply.end`
546
- * to check for `reflected-xss`
547
- *
548
- * @param {Fastify.reply} reply outgoing message
549
- */
550
- const registerEndHandler = (reply) =&gt; {
551
- const res = reply.raw <span class="branch-0 cbranch-no" title="branch not covered" >|| reply.res;</span>
552
- &nbsp;
553
- patcher.patch(res, 'end', {
554
- name: 'fastify.reply.raw',
555
- patchType,
556
- pre(data) {
557
- // Final check after handler and all hooks have ran
558
- const payload = data.args[0];
559
- if (!payload) return;
560
- &nbsp;
561
- const assessStore = sources.getStore()?.assess;
562
- if (!assessStore) return;
563
- &nbsp;
564
- const strInfo = tracker.getData(payload);
565
- if (!strInfo) return;
566
- &nbsp;
567
- if (
568
- isVulnerable({
569
- input: payload,
570
- disallowedTags,
571
- requiredTags,
572
- })
573
- ) {
574
- assessStore.findings = [
575
- { ruleId: 'reflected-xss', metadata: strInfo, stackTrace: captureStacktrace({}) },
576
- ];
577
- }
578
- },
579
- });
580
- };
581
- &nbsp;
582
- /**
583
- * adds a pre handler for `reply.send`
584
- * to check for `reflected-xss`
585
- *
586
- * @param {Fastify.reply} reply outgoing message
587
- */
588
- const registerSendHandler = (reply) =&gt; {
589
- patcher.patch(reply, 'send', {
590
- name: 'fastify.reply',
591
- patchType,
592
- pre(data) {
593
- const assessStore = sources.getStore()?.assess;
594
- if (!assessStore) return;
595
- &nbsp;
596
- /*
597
- * If the handler has resolved then Fastify is calling
598
- * reply.send rather than the handler itself, just
599
- * call original
600
- */
601
- if (assessStore[KEYS.FASTIFY_HANDLER_RESOLVED]) {
602
- return;
603
- }
604
- &nbsp;
605
- const [input] = data.args;
606
- if (!input || !isString(input)) return;
607
- &nbsp;
608
- const strInfo = tracker.getData(input);
609
- if (!strInfo) return;
610
- &nbsp;
611
- /*
612
- * Otherwise the handler is directly calling Reply.send
613
- * so get a nice stack trace if the input is vulnerable
614
- */
615
- if (
616
- isVulnerable({
617
- input,
618
- disallowedTags,
619
- requiredTags,
620
- })
621
- ) {
622
- assessStore.findings = [
623
- { ruleId: 'reflected-xss', metadata: strInfo, stackTrace: captureStacktrace({}) },
624
- ];
625
- }
626
- },
627
- });
628
- };
629
- &nbsp;
630
- /**
631
- * wraps `handleRequest` to use a patched version of reply
632
- * to check for `reflected-xss`
633
- *
634
- * @param {Function} handleRequest
635
- * @return {Function} wrapped handleRequest
636
- */
637
- const registerXssHandler = (handleRequest) =&gt;
638
- patcher.patch(handleRequest, {
639
- name: 'fastify.handleRequest',
640
- patchType,
641
- pre(data) {
642
- // if (!self.enabled) {
643
- // return;
644
- // }
645
- &nbsp;
646
- const [, , reply] = data.args;
647
- &nbsp;
648
- registerSendHandler(reply);
649
- registerEndHandler(reply);
650
- },
651
- });
652
- &nbsp;
653
- /**
654
- * If handler is async it will set a key in `AsyncStorage`
655
- * this is used in `Reply.send` to determine whether or not
656
- * to take a stack trace
657
- *
658
- * @param {Function} handler route handler
659
- * @return {Function} wrapped handler
660
- */
661
- const wrapAsyncRouteHandler = (handler) =&gt;
662
- handler.then((payload) =&gt; {
663
- const assessStore = sources.getStore()?.assess;
664
- &nbsp;
665
- if (assessStore) {
666
- assessStore[KEYS.FASTIFY_HANDLER_RESOLVED] = true;
667
- }
668
- &nbsp;
669
- return payload;
670
- });
671
- &nbsp;
672
- /**
673
- * Implements a fastify `onRoute` hook to wrap the handler
674
- * if it is a promise
675
- */
676
- const registerRouteWrapperHandler = () =&gt; {
677
- messages.on(constants.EVENTS.ON_ROUTE, (routeOptions) =&gt; {
678
- patcher.patch(routeOptions, 'handler', {
679
- name: 'fastify.route',
680
- patchType,
681
- post(data) {
682
- const { result } = data;
683
- if (result &amp;&amp; typeof result.then === 'function') {
684
- data.result = wrapAsyncRouteHandler(data.result);
685
- }
686
- },
687
- });
688
- });
689
- };
690
- &nbsp;
691
- xss.install = function () {
692
- depHooks.resolve(
693
- { name: 'fastify', file: 'lib/handleRequest.js' },
694
- registerXssHandler,
695
- );
696
- &nbsp;
697
- registerRouteWrapperHandler();
698
- };
699
- &nbsp;
700
- return xss;
701
- };
702
- &nbsp;</pre></td></tr></table></pre>
703
-
704
- <div class='push'></div><!-- for sticky footer -->
705
- </div><!-- /wrapper -->
706
- <div class='footer quiet pad2 space-top1 center small'>
707
- Code coverage generated by
708
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
709
- at 2023-01-31T12:35:51.238Z
710
- </div>
711
- <script src="../../../../../prettify.js"></script>
712
- <script>
713
- window.onload = function () {
714
- prettyPrint();
715
- };
716
- </script>
717
- <script src="../../../../../sorter.js"></script>
718
- <script src="../../../../../block-navigation.js"></script>
719
- </body>
720
- </html>
721
-