【问题标题】:XSS - It is possible to sanitise user input by removing "<"?XSS - 可以通过删除“<”来清理用户输入吗?
【发布时间】:2020-05-28 16:15:16
【问题描述】:
在前端是否可以通过从用户内容中删除 < 来捕获所有 XSS 攻击?这似乎是一种禁用恶意代码的简单方法,目前我没有需要保留< 的用例。这是否适用于所有情况?
我显示用户内容的方式始终是内部 html,例如
<div>{USER CONTENT}</div>
【问题讨论】:
标签:
javascript
xss
sanitization
html-sanitizing
【解决方案1】:
取决于您在哪里使用用户输入。
如果你在 a href= 中使用它,那么好吧:不!
<a href="{{linkFromUser}}">
然后可能是javascript:alert('oh no');
如果链接被按下,浏览器将在您的页面上下文中执行它。
【讨论】:
-
-
看看here。确保不使用 UTF7 并转义 &。
-
【解决方案2】:
为了澄清,答案在已接受答案的评论中。
Lux 友情链接document,确认类似的实体编码方法< 足以防止脚本在内部html 内容中运行(这几乎回答了我的问题)。但是& 也需要编码,并且应该避免使用UTF7 XSS 字符集(显然)。