通过
或标签加载可执行代码?
我正在开发一个应用程序,允许用户输入任意网址,该网址将包含在<a href="ARBITRARY URL">
和<img src="ARBITRARY URL" />
标签中。通过<img>或<a>标签加载可执行代码?
我在看什么类型的安全风险?
该应用程序使用PHP编码,目前唯一的安全对策是使用PHP的htmlentities()函数针对输入URL,然后将其作为HTML发送。我也在检查以确保URL文本以http://
或https://
开头,但我不知道这是否完成任何事情,安全明智。
我还应该做些什么来确保最终用户的安全?
您想了解XSS (Cross site scripting)和XSRF (Cross site request forgery)
编辑: 正如ryeguy指出的那样,你几乎可以复制并粘贴到XSS (Cross Site Scripting) Cheat Sheet任何的例子,并征求他们的防止的最好办法因此。
此外,可以在较新的浏览器中使用将整个图像插入到URL中。有可能通过那里注入某些东西,但是这需要一个大的浏览器端安全漏洞,我不知道如何消毒。
也许你只是想限制访问某些域,或检查图像是否物理存在?这可能已经有很大帮助。
它可以构建一个形象,也是一个有效的JavaScript文件,并得到一个浏览器来执行它。请参阅http://www.thinkfu.com/blog/?p=15
SVG图像(mime-type image/svg + xml)可以包含javascript。请参阅http://www.w3.org/TR/SVG/interact.html
... y,这更多的是我所担心的。谢谢。 – Dolph 2009-11-10 15:12:45
除了迄今为止的出色答案之外,xss备忘单并没有真正考虑像onmouseover onhover等事件属性。这些都是通过设计来允许某人在出现问题时运行某些javascript。
谢谢,我使用CodeIgniter框架,它有一个xss_clean()函数。我在通过xss_clean()传递它们之后尝试了大约一半的示例,并用字符串“[removed]”替换了所有易受攻击的文本。 – Dolph 2009-11-09 22:15:43