通过iframe src进行的XSS攻击

4
我允许用户通过提交嵌入代码的src来嵌入YouTube或任何其他视频源。然后我将其保存到数据库中,并通过iframe加载它。但是,如果有一个源,例如src="http://innocent.com/hackingContent.php",那么我的网站是否容易受到XSS攻击?
我估计用户可能在那个src中放置了恶意脚本,它会在iframe将源嵌入我的html时立即加载。
编辑:如果src包含<script type="text/javascript" src="evilScript.js"></script>怎么办?尽管我正在使用preg_match来确保它只是一个URL。
2个回答

7

是的,您是易受攻击的。有什么可以防止坏用户链接到色情网站?或者一个看起来正常但收集用户名和密码的网站。

为什么不建立一个白名单,只接受您认可的视频来源……验证提交的 URL 是否在这些域上,并验证 URL 是否存在。

这样人们就无法将完全随机的 URL 插入到您的内容中。

"白名单" 是一组您将接受的值。例如,在您的服务器上,当用户提交 URL 时,您将接受来自

http://www.youtube.com....

对吧?因此,您可以列出所有将接受的 URL,并确保用户的输入与列表中的项目匹配。如果不匹配,则拒绝它。(匹配指“以...开头”之类的方式-显然不是精确匹配)

"黑名单" 则相反。您会有一个列表,但这是一个您不允许的列表。

白名单==您允许的事物列表
黑名单==您不允许的事物列表


你的意思是使用 curl 库进行 URL 验证吗? - jmishra
就像这样。您还可以在服务器上下载内容并处理以确保其合法性。 - hvgotcodes
说到“视频源白名单”,这与iframe有什么不同呢?它是如何工作的?如果您在回答中解释一下,那将会很有帮助。 - jmishra

2
不,如果 iframe 的 src 与调用该 iframe 的域不同,则您将受到跨站脚本攻击的保护。这是根据“同源策略”规定的。

3
iframeзҡ„srcеұһжҖ§еҸҜд»ҘжҳҜjavascript:...пјҢиҝҷдјҡеңЁеҢ…еҗ«зӘ—еҸЈзҡ„дёҠдёӢж–ҮдёӯиҝҗиЎҢгҖӮ - Esailija
非常感谢您,David。那么您的意思是,如果我通过iframe将http://innocent.com/hackingContent.php加载到example.com/goodContent.php中,这样就没有问题了,对吗? - jmishra
@Esailija,那正是我试图解决的问题。给你点赞。 - jmishra
1
@jbloom1704 如果您完全未验证URL,则有数百万种进行XSS的方法。 - Esailija
@Esailija:这里的假设是URL是有效的。此外,我的问题从根本上是正确的。鉴于OP的情况,您不会受到XSS攻击的威胁。 - David Titarenco
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接