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" >