javascript - URL 内的元标记和脚本处理

标签 javascript html security web xss

我目前正在研究 session 固定技术并阅读了这篇文章: https://www.owasp.org/index.php/Session_fixation

在示例 2 和 3 中,它指出我大概可以设置使用以下 URL 加载资源的用户的 cookie:

http://website.kom/<script>document.cookie=”sessionid=abcd”;</script>
http://website.kon/<meta http-equiv=Set-Cookie content=”sessionid=abcd”>

这是否意味着浏览器在处理 URLS 时会处理这些标签?我已经尝试执行嵌入在加载 iframe 的 url 中的脚本,即使我对脚本标签进行 url 编码也无法让它们执行。

编辑

我还认为问题出在 url 显示给其他用户和脚本执行时。然而, session 固定的本质是让攻击者在登录之前设置用户的 cookie,以便攻击者在用户登录时劫持 session 。这与试图窃取用户 cookie 的常见 XSS 攻击形成对比劫持 session 。如果是这种情况,用户难道不应该首先访问目标站点,以便上述脚本更改目标站点的浏览器 cookie 吗?据我了解,浏览器 cookie 是基于每个站点的。因此,如果上述脚本在目标站点之外的任何其他站点执行,则 cookie 将设置为用户当前所在的站点,而不是目标站点。我的理解正确吗?

最佳答案

如果您在浏览器的 url 栏中键入如下内容:

http://example.com/<script>alert("Hello World");</script>

它被当作

http://example.com/%3Cscript%3Ealert%28%22Hello%20World%22%29;%3C/script%3E

普通 url 在浏览器中应该什么都不做。如果浏览器向您显示带有文本“Hello World”的警报,则该浏览器是一个安全漏洞,永远不应安装在此处。

但是,如果您正在尝试创建一个动态页面(JS/PHP/C#/Java 等),您应该永远记住,永远不要相信客户端。

如果你要输出 {RequestURI} , 这是 http://example.com/ 之后的所有内容你会有问题。您应该始终在用户输入中对 Html 实体进行编码,或者使用一些不允许 <meta> 的过滤器, <script>以及任何可能有问题的东西。

关于javascript - URL 内的元标记和脚本处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016118/

相关文章:

css - HTML 5 - HTML 在 IE7/IE8 中看不到 CSS?

security - 是否有可能在知道公钥和 "original data=>encrypted data"条目集的情况下获取 RSA 私钥?

security - 如何确定用于扩展符合 X.509 的数字签名的有效 OID?

javascript - 将 Bootstrap Datepicker 时间戳解析为 Joda DateTime

javascript - 当向下箭头键的 KeyBoardEvent keydown 发生时,滚动不起作用

javascript - 以 31 为日期创建日期在输出中给出 30

javascript - 如何使用字符串调用函数

Android : Security Concern :classes. dex 公开暴露的 WebService 名称在文件中可见

javascript - 在响应表中,第二列值与第一列值重叠

javascript - jQuery 选择除一个元素之外的所有元素