【发布时间】:2017-05-19 04:11:14
【问题描述】:
我有一个富文本区域,用户可以在其中输入内容。我正在尝试使用以下正则表达式来防止 JavaScript 注入:
return input == null ? null : input.replaceAll("(?i)<script.*?>.*?</script.*?>", "") // case 1
.replaceAll("(?i)<.*?javascript:.*?>.*?</.*?>", "") // case 2
.replaceAll("(?i)<.*?\\s+on.*?>.*?</.*?>", ""); // case 3
上面,input 是来自富文本区域的文本,我正在使用这个正则表达式来避免可能的 JavaScript 注入。
问题是案例3。如果用户的文本包含"on",则"on"之前的所有文本都会被删除。
我怎样才能使最后一种情况更严格,避免上述问题?
【问题讨论】:
标签: javascript java javascript-injection