通过标签加载可执行代码?

问题描述:

我正在开发一个应用程序,允许用户输入任意网址,该网址将包含在<a href="ARBITRARY URL"><img src="ARBITRARY URL" />标签中。通过<img>或<a>标签加载可执行代码?

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

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

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

看一看的XSS Checklist

+0

谢谢,我使用CodeIgniter框架,它有一个xss_clean()函数。我在通过xss_clean()传递它们之后尝试了大约一半的示例,并用字符串“[removed]”替换了所有易受攻击的文本。 – Dolph 2009-11-09 22:15:43

您想了解XSS (Cross site scripting)XSRF (Cross site request forgery)

编辑: 正如ryeguy指出的那样,你几乎可以复制并粘贴到XSS (Cross Site Scripting) Cheat Sheet任何的例子,并征求他们的防止的最好办法因此。

你应该随时消毒,IMG标签很容易受到cross-site-scripting

此外,可以在较新的浏览器中使用将整个图像插入到URL中。有可能通过那里注入某些东西,但是这需要一个大的浏览器端安全漏洞,我不知道如何消毒。

也许你只是想限制访问某些域,或检查图像是否物理存在?这可能已经有很大帮助。

CSRF

<img src="http://example.org/accounts/123/delete" /> 
+0

太棒了。 – Dolph 2009-11-09 22:11:53

它可以构建一个形象,也是一个有效的JavaScript文件,并得到一个浏览器来执行它。请参阅http://www.thinkfu.com/blog/?p=15

SVG图像(mime-type image/svg + xml)可以包含javascript。请参阅http://www.w3.org/TR/SVG/interact.html

+0

... y,这更多的是我所担心的。谢谢。 – Dolph 2009-11-10 15:12:45

除了迄今为止的出色答案之外,xss备忘单并没有真正考虑像onmouseover onhover等事件属性。这些都是通过设计来允许某人在出现问题时运行某些javascript。