通过<img/>或<a> tags?</a>加载可执行代码

时间:2009-11-09 21:48:54

标签: php javascript security xss image

我正在开发一款应用,允许用户输入包含在<a href="ARBITRARY URL"><img src="ARBITRARY URL" />标签中的任意网址。

我在看什么类型的安全风险?

应用程序是用PHP编码的,我目前执行的唯一安全对策是在输入URL之前使用PHP的htmlentities()函数,然后再将其作为HTML发送。我还要检查以确保URL文本以http://https://开头,但我不知道这是否正在完成任何事情,安全方面。

我还应该做些什么来确保最终用户的安全?

7 个答案:

答案 0 :(得分:3)

查看XSS Checklist

答案 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。