Lor*_*ing 7 ruby security session sinatra session-fixation
ruby中的大多数会话固定主题主要与rails相关.sinatra中是否存在任何会话固定漏洞?在rails中,我们主要建议在分配会话之前执行reset_session.我们如何防止sinatra中的会话固定?
Sinatra 默认使用 Rack::Protection gem,它可以防止许多常见漏洞。您可能对其会话劫持保护特别感兴趣。以下是 Rack::Protection gem 可防止的一些事情:
真实性令牌:如果给定的访问令牌与会话中包含的令牌匹配,则仅接受不安全的 HTTP 请求。表单令牌:仅当给定的访问令牌与会话中包含的令牌匹配时才接受提交的表单。不期望来自 Ajax 请求的此类令牌。远程令牌:仅当给定的访问令牌与会话中包含的令牌匹配或请求来自同一来源时,才接受不安全的 HTTP 请求。JSON CSRF: JSON GET API 很容易被嵌入为 JavaScript,而数组原型已被修补以跟踪数据。如果内容类型为 JSON,即使在 GET 请求中也会检查引荐来源网址。远程引用者:如果引用者 [sic] 标头设置为不同的主机,则不接受不安全的 HTTP 请求。
XSS 标头:设置 X-XSS-Protection 标头以告诉浏览器阻止攻击。点击劫持。转义参数:自动转义 Rack::Request#params,以便它们可以嵌入 HTML 或 JavaScript 中,而不会出现任何其他问题。如果已定义,则对转义字符串调用 html_safe,以避免 Rails 中的双重转义。
框架选项:设置 X-Frame-Options 标头以告诉浏览器避免将页面嵌入框架中。
取消转义“/”和“.”,扩展path_info。因此 GET /foo/%2e%2e%2fbar 变为 GET /bar。
跟踪请求属性(例如会话中的用户代理),并在这些属性发生更改时清空会话。这基本上可以防止 Firesheep 的攻击。由于考虑的所有标头也可能被欺骗,因此这不会阻止所有劫持尝试。
检测(某些)IP 欺骗攻击。
与大多数安全相关问题一样,了解网络安全的一般知识是个好主意。不幸的是,没有很多专门解决 Sinatra 安全性的好教程。
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |