在我的博客中,我让用户提交此<a href="$">link text</a>
之类的链接,只要他们输入的内容只保留在“href”属性中,即使他们尝试关闭“或&gt;我使用html_entity_decode()函数,然后过滤了关键字javascript:
我的问题是:
javascript
?data:
可能构成与javascript:
相同的威胁吗?我的主要问题是第4个问题。前三个问题的答案是肯定/否定,我很好。
答案 0 :(得分:3)
从长远来看,很可能不足够。看一下HTML5 Security Cheatsheet,您会发现大多数当前的XSS向量非常复杂,javascript
和data
是常见目标。
因此,您不能仅仅依靠阻止已知的错误值(“如果它不以...开头”)。你应该只允许已知的好的值(“它只是以......开头”。)
这并不困难,因为您正在处理其语法在RFC 3986中定义的URL,除了有点奇怪的命名方案之外,它对3.2节中定义的大多数模式非常有帮助。您可以使用标准URL解析类之一(我可以为Python推荐一些),然后根据您的需要验证每个令牌。
请记住,#
在RFC中称为“片段”。