Ruby 中大多数会话固定主题大多与 rails 有关。Sinatra中是否存在任何会话固定漏洞?在 rails 中,我们主要建议在分配会话之前执行reset_session。我们如何防止辛纳屈的会话固定?
Sinatra默认使用Rack::P rotection gem,它可以防止许多常见的漏洞。您可能对其会话劫持保护特别感兴趣。这些是机架::P旋转宝石保护的一些东西:
跨站点请求伪造
真实性令牌:仅当给定的访问令牌与会话中包含的令牌匹配时,才接受不安全的 HTTP 请求。表单令牌:仅当给定的访问令牌与会话中包含的令牌匹配时,才接受提交的表单。不希望来自 Ajax 请求的此类令牌。远程令牌:仅当给定访问令牌与会话中包含的令牌匹配或请求来自同一源时,才接受不安全的 HTTP 请求。JSON CSRF:JSON GET API 很容易被嵌入为 JavaScript,而 Array 原型已被修补以跟踪数据。如果内容类型为 JSON,即使在 GET 请求上也检查引用。远程推荐人:如果 Referer [sic] 标头设置为其他主机,则不接受不安全的 HTTP 请求。
跨站点脚本
XSS 标头:设置 X-XSS 保护标头以告知浏览器阻止攻击。点击劫持。转义参数:自动转义 Rack::Request#params,以便它们可以嵌入到 HTML 或 JavaScript 中,而不会出现任何进一步的问题。调用转义字符串(如果已定义)html_safe,以避免在 Rails 中进行双重转义。
点击劫持
框架选项:设置 X-框架选项标题以告知浏览器避免在框架中嵌入页面。
目录遍历
取消转义"/"和".",展开path_info。因此,GET/foo/%2e%2e%2fbar 变为 GET/bar。
会话劫持
跟踪请求属性(如会话中的用户代理),并在这些属性发生更改时清空会话。这基本上可以防止来自Firesheep的攻击。由于考虑的所有标头也可能被欺骗,因此这不会阻止所有劫持尝试。
IP 欺骗
检测(某些)IP 欺骗攻击。
与大多数与安全相关的问题一样,最好对 Web 安全有一般了解。不幸的是,没有很多专门针对Sinatra安全性的好教程。