我正在开发一款应用,允许用户输入包含在<a href="ARBITRARY URL">
和<img src="ARBITRARY URL" />
标签中的任意网址。
我在看什么类型的安全风险?
应用程序是用PHP编码的,我目前执行的唯一安全对策是在输入URL之前使用PHP的htmlentities()函数,然后再将其作为HTML发送。我还要检查以确保URL文本以http://
或https://
开头,但我不知道这是否正在完成任何事情,安全方面。
我还应该做些什么来确保最终用户的安全?
答案 0 :(得分:3)
答案 1 :(得分:3)
可以构建一个也是有效javascript文件的图像,并获得一个浏览器来执行它。见http://www.thinkfu.com/blog/?p=15
SVG图像(mime-type image / svg + xml)可以包含javascript。见http://www.w3.org/TR/SVG/interact.html
答案 2 :(得分:2)
您想了解XSS (Cross site scripting)和XSRF (Cross site request forgery)
修改的: 正如ryeguy所指出的那样,您可以在XSS (Cross Site Scripting) Cheat Sheet中复制并粘贴任何示例,并寻求最佳方法来相应地阻止它们。
答案 3 :(得分:2)
您应该始终清理,img标签容易受到cross-site-scripting
的攻击答案 4 :(得分:1)
此外,可以在较新的浏览器中使用inline data将整个图像插入到网址中。也许有可能在那里注入一些东西,但这需要一个巨大的浏览器端安全漏洞,我不知道如何消毒这样的东西。
也许您只想限制对某些域的访问,或检查图像是否存在?这可能已经有很多帮助了。
答案 5 :(得分:1)
CSRF:
<img src="http://example.org/accounts/123/delete" />
答案 6 :(得分:0)
除了目前为止的优秀答案之外,xss作弊表并没有真正考虑onmouseover onhover等事件属性。这些都是设计允许某人在发生某些事情时运行一些javascript。