设置图像的src属性时是否需要注意,其中src路径由用户指定?

时间:2010-11-23 07:58:53

标签: javascript html security xss sanitization

我正在创建一个页面,其中用户将指定图像的网址。此URL将存储在DB中,然后将返回以显示图像。到目前为止,如果用户不想恶作剧,那就好了。

但现在通过http://ha.ckers.org/xss.html,用户还可以指定一个实际上是脚本的URL。

<IMG SRC=javascript:alert('XSS')> 

我在一个页面中试过这个,但这并没有造成任何伤害。 [未显示警报] 所以重点是,我真的需要关心用户指定的内容吗?如果是,那么我需要考虑的案例/场景是什么,以及如何做到这一点?

3 个答案:

答案 0 :(得分:5)

只要你从不受信任的来源获得任何东西,你就需要照顾它。在这种情况下,用户可以编写一些有害代码来破解你的HTML。

<img alt='' src='' />alert('xss');<!--'-->

当在不同的地方使用时,用户输入也应以不同的方式处理。例如。网址编码,Html编码,Javascript编码。

总之,不要相信用户输入!

答案 1 :(得分:1)

在存储到数据库之前,请确保它是:

  1. 有效的URL(每种服务器端语言都有自己的方法)
  2. 有效图像(在服务器端使用某种XMLHTTP / WebRequest并解析内容)
  3. 如果你有ASP.NET步骤#2变得简单,使用WebResponse流创建新的Bitmap,看看它是否成功,Bitmap是否有效。

答案 2 :(得分:0)

他也可以提供像myevilscript.php这样的值,他会做一些php的东西。所以实际上你真的不应该这样做:)