| 448 | | function removeXSSRisk(text) { |
| 449 | | var reg = /always/ig; |
| 450 | | //embedによるXSSの対策処理 |
| 451 | | text = text.replace(/(<\s*?embed[^<>]*?allowScriptAccess\s*?=\s*?["'])([^"']*?)(["'][^<>]*?>)/ig, function(match, l, val, r) { |
| 452 | | if (reg.test(val)) { |
| 453 | | return l + "never" + r; |
| 454 | | } else { |
| 455 | | return match; |
| 456 | | } |
| 457 | | }); |
| 458 | | //objectのparam要素によるXSSの対策処理 |
| 459 | | text = text.replace(/(<\s*?param[^<>]*?name\s*?=\s*?["']\s*?allowScriptAccess[^"']*?["'][^<>]*?value\s*?=\s*?["']\s*?)([^"']*?)(["'][^<>]*?\/>)/ig, function(match, l, val, r) { |
| 460 | | if (reg.test(val)) { |
| 461 | | return l + "never" + r; |
| 462 | | } else { |
| 463 | | return match; |
| 464 | | } |
| 465 | | }); |
| 466 | | //イベントハンドラによるXSSの対策処理 |
| 467 | | text = text.replace(/(<[^>]*?)(on(load|unload|click|dblclick|mousedown|mouseup|mouseover|mouseout|mousemove|keypress)\s*?=\s*?["'][^"']*?["'])/ig, function(match, l, handler, val) { |
| 468 | | return l; |
| 469 | | }); |
| 470 | | return text; |
| | 448 | function removeXSSRisks(text) { |
| | 449 | // <embed allowScriptAccess="always"><object onload =alert(this) ><param value= 'always' name = " allowScriptAccess "/></object> |
| | 450 | // <embed allowScriptAccess="never"><object ><param value= 'never' name = " allowScriptAccess "/></object> |
| | 451 | return text |
| | 452 | // embedによるXSSの対策処理 |
| | 453 | .replace(/(<embed[^>]+?allowScriptAccess\s*=\s*)(?:(["'])\s*always\s*\2|always)(?=[^>]*?>)/gi, "$1$2never$2") |
| | 454 | // objectのparam要素によるXSSの対策処理 |
| | 455 | .replace(/(<param[^>]+?)(?:(name\s*=\s*(?:(["'])\s*allowScriptAccess\s*\3|allowScriptAccess\s)[^>]*?value\s*=\s*)(?:(["'])\s*always\s*\4|always)(?=[^>]*?\/?>)|(value\s*=\s*)(?:(["'])\s*always\s*\6|always)(?=[^>]*?name\s*=\s*(?:(["'])\s*allowScriptAccess\s*\7|allowScriptAccess)[^>]*?\/?>))/gi, "$1$2$5$4$6never$4$6") |
| | 456 | // イベントハンドラによるXSSの対策処理 |
| | 457 | .replace(/(<[^>]+?)\son(?:(?:un)?load|(?:dbl)?click|mouse(?:down|up|over|move|out)|key(?:press|down|up)|focus|blur|submit|reset|select|change)\s*=\s*(?:(["'])(?:\\\2|[^"'])*?\2|[^"'][^\s>]*(?=[\s>]))(?=[^>]*?>)/ig, "$1"); |