防止在ruby sinatra中固定会话

时间:2012-07-05 03:48:15

标签: ruby security session sinatra session-fixation

ruby​​中的大多数会话固定主题主要与rails相关。 sinatra中是否存在任何会话固定漏洞?在rails中,我们主要建议在分配会话之前执行reset_session。我们如何在sinatra中防止会话固定?

1 个答案:

答案 0 :(得分:4)

默认情况下,Sinatra使用Rack :: Protection gem来防御许多常见漏洞。您可能对其会话劫持保护特别感兴趣。这些是Rack :: Protection gem防范的一些内容:

跨站请求伪造

真实性令牌:如果给定的访问令牌与会话中包含的令牌匹配,则仅接受不安全的HTTP请求。 表单令牌:如果给定的访问令牌与会话中包含的令牌匹配,则仅接受提交的表单。不期望这样的令牌来自Ajax请求。 远程令牌:如果给定的访问令牌与会话中包含的令牌匹配或请求来自同一源,则仅接受不安全的HTTP请求。 JSON CSRF: JSON GET API很容易被嵌入为JavaScript,而Array原型已经过修补以跟踪数据。如果内容类型是JSON,则检查引用者甚至是GET请求。 远程引荐来源:如果Referer [sic]标头设置为其他主机,则不接受不安全的HTTP请求。

跨站点脚本

XSS标头:设置X-XSS-Protection标头,告诉浏览器阻止攻击。点击劫持。 Escaped Params:自动转义Rack :: Request#params,以便它们可以嵌入到HTML或JavaScript中而不会出现任何其他问题。如果已定义,则在转义字符串上调用html_safe,以避免在Rails中双重转义。

点击劫持

框架选项:设置X-Frame-Options标头,告诉浏览器避免在页面中嵌入页面。

目录遍历

Unescapes'/'和'。',展开path_info。因此GET / foo /%2e%2e%2fbar变为GET / bar。

会话劫持

跟踪会话中的用户代理等请求属性,如果这些属性发生更改,则会清空会话。这基本上可以防止来自Firesheep的攻击。由于所有考虑的标题也可能被欺骗,这不会阻止所有劫持尝试。

IP欺骗

检测(某些)IP欺骗攻击。

与大多数安全相关的问题一样,最好具备网络安全的一般知识。不幸的是,没有很多优秀的教程专门针对Sinatra安全性。