|
1644 | 1644 | '<img y="<x">',
|
1645 | 1645 | '<img y="<x">',
|
1646 | 1646 | '<img y="<x">',
|
| 1647 | + "<img x=\"/><img src=x onerror=alert(1)>\" y=\"<x\">" |
1647 | 1648 | ]);
|
1648 | 1649 | }
|
1649 | 1650 | );
|
|
1735 | 1736 | '<svg><desc></desc></svg>',
|
1736 | 1737 | '<svg xmlns="http://www.w3.org/2000/svg"><desc></desc></svg>',
|
1737 | 1738 | '<svg xmlns="http://www.w3.org/2000/svg" />',
|
| 1739 | + "<svg xmlns=\"http://www.w3.org/2000/svg\"><desc /></svg>" |
1738 | 1740 | ],
|
1739 | 1741 | },
|
1740 | 1742 | {
|
1741 | 1743 | test: '<svg><canvas></canvas><textarea></textarea></svg>',
|
1742 | 1744 | expected: [
|
1743 | 1745 | '<svg></svg>',
|
1744 | 1746 | '<svg xmlns="http://www.w3.org/2000/svg" />',
|
| 1747 | + "<svg xmlns=\"http://www.w3.org/2000/svg\"><title /></svg>" |
1745 | 1748 | ],
|
1746 | 1749 | },
|
1747 | 1750 | {
|
|
2095 | 2098 | });
|
2096 | 2099 | });
|
2097 | 2100 |
|
2098 |
| - QUnit.test('Test proper handling of nesting-based mXSS 1/3', function (assert) { |
2099 |
| - |
2100 |
| - let dirty = `${`<div>`.repeat(250)}${`</div>`.repeat(250)}<img>`; |
2101 |
| - let expected = `${`<div>`.repeat(250)}${`</div>`.repeat(250)}<img>`; |
2102 |
| - let clean = DOMPurify.sanitize(dirty); |
2103 |
| - assert.contains(clean, expected); |
2104 |
| - |
2105 |
| - dirty = `${`<div>`.repeat(255)}${`</div>`.repeat(255)}<img>`; |
2106 |
| - expected = `${`<div>`.repeat(253)}${`</div>`.repeat(253)}<img>`; |
2107 |
| - clean = DOMPurify.sanitize(dirty); |
2108 |
| - assert.contains(clean, expected); |
2109 |
| - |
2110 |
| - dirty = `${`<div>`.repeat(257)}${`</div>`.repeat(257)}<img>`; |
2111 |
| - expected = `${`<div>`.repeat(253)}${`</div>`.repeat(253)}<img>`; |
2112 |
| - clean = DOMPurify.sanitize(dirty); |
2113 |
| - assert.contains(clean, expected); |
2114 |
| - |
2115 |
| - dirty = `<div><template>${`<div>`.repeat(257)}${`</div>`.repeat(257)}<img>`; |
2116 |
| - expected = `<div><template>${`<div>`.repeat(251)}${`</div>`.repeat(251)}<img></template></div>`; |
2117 |
| - clean = DOMPurify.sanitize(dirty); |
2118 |
| - assert.contains(clean, expected); |
2119 |
| - |
2120 |
| - dirty = `<div><template>${`<r>`.repeat(255)}<img>${`</r>`.repeat( |
2121 |
| - 255 |
2122 |
| - )}</template></div><img>`; |
2123 |
| - expected = `<div><template></template></div><img>`; |
2124 |
| - clean = DOMPurify.sanitize(dirty); |
2125 |
| - assert.contains(clean, expected); |
2126 |
| - |
2127 |
| - }); |
2128 |
| - |
2129 |
| - QUnit.test('Test proper handling of nesting-based mXSS 2/3', function (assert) { |
2130 |
| - |
2131 |
| - let dirty = `<form><input name="__depth">${`<div>`.repeat(500)}${`</div>`.repeat(500)}<img>`; |
2132 |
| - let expected = [ |
2133 |
| - ``, |
2134 |
| - `<form><input>${`<div>`.repeat(252)}${`</div>`.repeat(252)}<img></form>`, |
2135 |
| - ]; |
2136 |
| - let clean = DOMPurify.sanitize(dirty); |
2137 |
| - assert.contains(clean, expected); |
2138 |
| - |
2139 |
| - dirty = `<form><input name="__depth"></form>${`<div>`.repeat(500)}${`</div>`.repeat(500)}<img>`; |
2140 |
| - expected = [ |
2141 |
| - `${`<div>`.repeat(253)}${`</div>`.repeat(253)}<img>`, |
2142 |
| - `<form><input></form>${`<div>`.repeat(253)}${`</div>`.repeat(253)}<img>` |
2143 |
| - ]; |
2144 |
| - clean = DOMPurify.sanitize(dirty); |
2145 |
| - assert.contains(clean, expected); |
2146 |
| - |
2147 |
| - dirty = `<form><input name="__removalCount">${`<div>`.repeat( |
2148 |
| - 500 |
2149 |
| - )}${`</div>`.repeat(500)}<img>`; |
2150 |
| - expected = [ |
2151 |
| - ``, |
2152 |
| - `<form><input>${`<div>`.repeat( |
2153 |
| - 252 |
2154 |
| - )}${`</div>`.repeat(252)}<img></form>`, |
2155 |
| - ]; |
2156 |
| - clean = DOMPurify.sanitize(dirty); |
2157 |
| - assert.contains(clean, expected); |
2158 |
| - |
2159 |
| - dirty = `<form><input name="__removalCount"></form>${`<div>`.repeat( |
2160 |
| - 500 |
2161 |
| - )}${`</div>`.repeat(500)}<img>`; |
2162 |
| - expected = [ |
2163 |
| - `${`<div>`.repeat(253)}${`</div>`.repeat(253)}<img>`, |
2164 |
| - `<form><input></form>${`<div>`.repeat( |
2165 |
| - 253 |
2166 |
| - )}${`</div>`.repeat(253)}<img>`, |
2167 |
| - ]; |
2168 |
| - clean = DOMPurify.sanitize(dirty); |
2169 |
| - assert.contains(clean, expected); |
2170 |
| - }); |
2171 |
| - |
2172 | 2101 | QUnit.test('Test proper handling of nesting-based mXSS 3/3', function (assert) {
|
2173 | 2102 |
|
2174 | 2103 | let dirty = `<form><input name="__depth">`;
|
|
0 commit comments