Javascript XSS:img标记中的src属性是否单独导致XSS?

Javascript XSS:img标记中的src属性是否单独导致XSS?,javascript,html,xss,Javascript,Html,Xss,下面的img标记只包含src属性。它是否会导致xss,而不具有其他属性,如窗口事件onerror=eval(src) 只要不执行JavaScript,就不必担心XSS 如果在后端使用前端的值,则会出现问题 示例: <input type="text" name="age"> 用户类型:document.body.innerHTML='Hacked!' 现在在后端,您只需使用echo$\u POST['age'] 因此,正如您所看到的,您关心自己的代码是很好的,但要更加小心用户可

下面的
img
标记只包含
src
属性。它是否会导致
xss
,而不具有其他属性,如窗口事件
onerror=eval(src)


只要不执行JavaScript,就不必担心XSS

如果在后端使用前端的值,则会出现问题

示例:

<input type="text" name="age">

用户类型:
document.body.innerHTML='Hacked!'

现在在后端,您只需使用
echo$\u POST['age']

因此,正如您所看到的,您关心自己的代码是很好的,但要更加小心用户可能键入的内容,因为这是危险的部分


在您的情况下,
将不会执行。即使它被执行了,那也只是你键入的东西,而不是用户。

这一行代码是孤立的:

可以被欺骗生成这样一行代码的网站:可能是

如果您的模板类似于:

<img src=$user_data>

那么它几乎肯定是脆弱的

即使您试图将提交的数据中的一些“坏字符”列入黑名单,也可能会受到攻击。例如,即使禁止使用空格,也可以通过利用无效标记的错误恢复来添加额外属性:

<img src="foo"/onerror="baz">

唯一确定的解决方案也是相对简单的,是:


  • 转义在HTML中打印的数据。至少更改
    是的,我们可以单独使用src属性创建XSS

    <img src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K" alt="add" >
    
    
    

    Base64代码可以处理其他事情

    现代浏览器可能不会执行特定的代码,不。但真正的问题应该是,这一点最初是如何实现的。如果其中任何一项是用户输入的,那么如果处理不当,很容易导致问题。但是,在你就这些具体细节提出更多问题之前,你可能应该先通读一下整个主题。这是一个很好的起点。@CBroe:我只是在阅读了上面的xss博客后才问这个问题的。目前我正在处理html用户输入,我删除了img标记中的所有windows事件,只允许src、height、width和alt。现在我的疑问是,如果您不能正确处理放入其中的内容,那么单独保留src属性是如何导致XSSIt导致XSS的。您上面的示例甚至没有正确引用该值,但即使您的模板中有
    ,并且
    是您将要替换为一个值的部分,我可以从外部将该值输入脚本-那么,如果该值为
    foo.jpg“onclick=”alert('bar'),您认为会发生什么
    ?如果用户输入一些从其他站点引用的恶意javascript脚本,会如何执行?这里的问题是..我们无法验证src是否有效?@cpp\u learner如果它是一个非常旧的浏览器,是的。这将是一个问题。但是现代浏览器不支持它。。。只要您不将它保存在数据库中,也不在后端使用它,即使这样也不会有问题。
    <img src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K" alt="add" >