gpt4 book ai didi

security - 这种使用 HttpOnly Cookie 的 XSS 保护能起作用吗?

转载 作者:行者123 更新时间:2023-12-03 06:31:42 26 4
gpt4 key购买 nike

我对 HttpOnly cookie 以及使用 XHR 请求与 TRACE 方法结合使用以获取从服务器回显的 cookie 值的可能性所存在的问题进行了一些研究。

对于安全的网络应用程序,我目前有以下设置:

  • session cookie 在登录时发送,并设置了 secure 和 httpOnly 属性
  • 对整个域禁用 TRACE http 方法(返回“405 Method not allowed”)

为了避免跨站点请求伪造,我在表单的隐藏字段中添加了一个随 secret 钥。必须在每个 POST 请求中返回此 key 才能接受请求。

除此之外,默认情况下,所有 HTML 都会使用白名单进行转义,以选择允许的标签和属性,但为了说明为什么这还不够:我们之前允许使用 span 上的样式属性(例如为文本着色) ),可用于通过以下方式在 Internet Explorer 中传递 javascript:

<span style="width: expression(alert('Example'));"> </span>

然后是最后一个问题:有人可以指出此设置中可能存在的任何缺陷或建议吗?或者您使用相同或完全不同的方法?

已知问题:

  • 并非所有浏览器都支持 httpOnly
  • 过滤 css JS 表达式是不够的,@import(external-style-sheet) 也可以工作

最佳答案

根据您的帖子(标题有点误导),我假设您了解 Httponly 属性会阻止通过 document.cookie 访问 cookie,并且不会采取任何其他措施来防止 XSS 允许的其他令人讨厌的事情,包括冒充用户(即,不要不需要窃取cookie并可以使用检索到的CSRF token ),检查浏览器上的易受攻击的插件以安装恶意软件,安装javascript键盘记录器,扫描您的内部网络等,重写页面等。

正如您所说,将标签和每个标签的属性列入白名单是不够的。您必须可能通过白名单正则表达式对属性值应用更严格的验证。

需要考虑的其他事项的不完整列表,其中一些与 XSS 或 CSRF 没有直接关系:

  • 如何处理不完整的 html(例如缺少结束标记)?
  • 如何处理用户输入中的单引号、双引号和反斜杠?
  • 如何处理在不同上下文中输出的用户输入 - 例如在 url 链接、属性值等中?
  • 您是否检查输入是否确实与输入字符集编码匹配?
  • 您是否在响应 header 和元标记中显式设置 Content-Type?
  • 对于通过 HTTP 提供的中等敏感用户页面(如果有),您是否设置了适当的 Cache-Control header ?
  • 如何确保用户输入经过沙盒处理?具体来说,如果允许 CSS,如何确保样式仅应用于受限制的区域而不能更改其他区域?
  • 您是否有第 3 方 JavaScript(包括网站上的广告)?
  • session cookie 是否可以防止篡改(如果应该的话)?
  • 您是否清理了所有输入,包括用户可以修改的 HTTP header ?
  • CSRF token 真的是随机的吗?如果是,如何生成随机 token ?如果没有,你如何构建它?
  • 您是否使用准备好的语句和绑定(bind)参数?
  • 用户可以上传文件吗?
  • 你们是否提供用户上传的内容(例如图像等)?如果是,您如何验证文件内容(GIFAR 缺陷)以及该文件是否由同一域提供?
  • 你们是否提供 API 访问权限?如果是,是否托管在同一域上?您有什么跨域限制?

关于security - 这种使用 HttpOnly Cookie 的 XSS 保护能起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com