我正在创建一个页面,其中用户将指定图像的网址。此URL将存储在DB中,然后将返回以显示图像。到目前为止,如果用户不想恶作剧,那就好了。
但现在通过http://ha.ckers.org/xss.html,用户还可以指定一个实际上是脚本的URL。
<IMG SRC=javascript:alert('XSS')>
我在一个页面中试过这个,但这并没有造成任何伤害。 [未显示警报] 所以重点是,我真的需要关心用户指定的内容吗?如果是,那么我需要考虑的案例/场景是什么,以及如何做到这一点?
答案 0 :(得分:5)
只要你从不受信任的来源获得任何东西,你就需要照顾它。在这种情况下,用户可以编写一些有害代码来破解你的HTML。
<img alt='' src='' />alert('xss');<!--'-->
当在不同的地方使用时,用户输入也应以不同的方式处理。例如。网址编码,Html编码,Javascript编码。
总之,不要相信用户输入!
答案 1 :(得分:1)
在存储到数据库之前,请确保它是:
如果你有ASP.NET步骤#2变得简单,使用WebResponse流创建新的Bitmap,看看它是否成功,Bitmap是否有效。
答案 2 :(得分:0)
他也可以提供像myevilscript.php
这样的值,他会做一些php的东西。所以实际上你真的不应该这样做:)