Tag: 安全

Ruby的OpenSSL :: Random的种子是否充足?

我对Ruby知之甚少,所以请原谅我,如果答案是显而易见的。 我在http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html注意到Ruby在调用random_bytes时使用pid和当前时间来播种OpenSSL :: Random是。 除非发生其他事情,否则这不是Netscape在90年代中期初始SSL实施中使用的种子吗? http://en.wikipedia.org/wiki/Random_number_generator_attack#Prominent_examples_of_random_number_generator_security_issues 当然,Ruby还没有复活一个18岁的小虫。 我在这里想念的是什么? 编辑:这是random_bytes的来源。 请注意第一次检查是否使用OpenSSL编译ruby,在这种情况下,它会使用pid和当前时间对其进行种子处理。 def self.random_bytes(n=nil) n = n ? n.to_int : 16 if defined? OpenSSL::Random @pid = 0 if !defined?(@pid) pid = $$ if @pid != pid now = Time.now ary = [now.to_i, now.nsec, @pid, pid] OpenSSL::Random.seed(ary.to_s) @pid = pid end return OpenSSL::Random.random_bytes(n) end if !defined?(@has_urandom) || @has_urandom […]

在RoR中的会话cookie上设置“安全”标志,甚至通过HTTP

在Rails应用程序中,当通过HTTPS发送以确保cookie不会通过非HTTP连接泄露时,可以轻松地将会话cookie设置为包括secure cookie属性。 但是,如果Rails应用程序不使用HTTPS,而只使用HTTP,则它似乎根本不设置cookie。 虽然这确实有意义,但在这种情况下,有一个单独的前端负载均衡器,它负责终止SSL连接。 从LB到Rails应用程序,连接只是HTTP。 即使不使用HTTPS,如何强制Rails应用程序设置secure cookie?

如何防止Rails用户意外地认证为错误的用户?

具体来说,我编写了一个Rails应用程序,其中我使用默认(在Rails 2.3.5中) CookieStore会话存储,我发现了一个奇怪的问题。 我和其他几个人一直在使用该网站几个星期,我们每个人都有一个基于用户名和密码的登录(每个用户注册自己,我将(盐渍和散列)数据存储在数据库中)。 我将用户ID存储在Rails session对象中(因此,在浏览器和服务器之间来回传递的cookie中)。 这里有一个重点:由于这是一个内部网站点,因此我将cookie设置为保持活动长达2周,以避免用户不得不一直登录。 今天我重置数据库,有意擦除所有用户记录(以及所有其他数据)。 一些用户开始再次注册,然后一个用户发现他们第一次去网站,因为擦除他们自动以不同的用户身份登录! 我想我可以看到为什么会发生这种情况:从该用户的浏览器传递到服务器的用户ID现在与我的数据库中的不同用户记录匹配。 我最初的想法是“哦,亲爱的,我没想到!” 但我想的越多,我就意识到这可能是预期的行为。 我意识到我可以将我的Rails应用程序更改为用户ActiveRecordStore但在我这样做之前我想确保我理解这里发生了什么。 具体来说,使用CookieStore会话和让会话保持活跃一段时间的组合真的会造成这样一个巨大的安全漏洞吗? 或者我错过了什么? session_id应该在这里提供更多的安全性吗?

安全的ERB语言?

我想知道是否有一个重新组装ERB的安全模板。 ERB非常容易使用,但在CMS中使用它的致命部分是过度强大的访问(你可以在几秒钟内写出一些非常令人讨厌的东西……)所以我想知道是否有任何机会存在这样的语言。 请不要半径/液体…..这样写延伸太​​麻烦了,模板语法本身就不是我的一杯茶…我想尽可能避免它。 更新:这不是完美的(因为它不是erb)但似乎比Liquid更好: http : //github.com/scottpersinger/laminate 你必须使用Lua作为你的模板,但Lua已经比尝试使用液体要好得多(这使你无法做一个简单的赋值语法……)

在Rails中添加路由安全性

在Rails 2中,如何防止用户只更改id#并访问其他对象? 例如 : website.com/users/1231/edit 如何阻止用户更改1231并访问其他帐户?

如何在Rails中存储第三方服务的凭据

我正在通过SendGrid为我的rails应用程序发送的邮件设置重定向。 但是,我对告知存储凭据的方式并不满意。 在那里指定,他们建议覆盖config / environment.rb文件中的ActionMailers默认值。 我发现我的前任创建了一个初始化器/ smtp.rb文件,他在那里定义了以前的设置,但是通过发现这个文件,我发现了SMTP密码…… 如果我修改任何这些文件,那么有权访问git存储库的人将可以访问凭据(包括我们使用的前端和后端自由职业者)。 我正在考虑创建一个文件,该文件将保留在服务器的共享文件夹(如database.yml文件)上,并且每次部署时都会通过capistrano与应用程序进行符号链接。 你怎么看呢? 将此初始化程序/ smtp.rb移动到服务器的共享文件夹并在部署时将其符号链接是否可以?

有必要使用Rails应用程序设置ServerSignature和ServerTokens apache配置选项吗?

我在我的一本铁轨书中看到了我应该设置的东西 ServerSignature Off ServerTokens Prod 当应用程序搞砸时,禁止apache在生产中显示服务器信息。 这有必要吗? 我在prod中看到的唯一错误消息是标准的Rails生成错误消息。 我从未看到任何服务器信息。 我需要设置其他与安全相关的apache配置变量吗?

如何使用secrets.yml在Rails 4.1中动态生成秘密令牌?

铁路新手。 按照Hartl的教程,他使用此代码动态生成config / initializers / secret_token.rb的秘密令牌 require ‘securerandom’ def secure_token token_file = Rails.root.join(‘.secret’) if File.exist?(token_file) # Use the existing token. File.read(token_file).chomp else # Generate a new token and store it in token_file. token = SecureRandom.hex(64) File.write(token_file, token) token end end SampleApp::Application.config.secret_key_base = secure_token 我试图通过使用secrets.yml来遵循新的Rails 4.1方式,并删除secret_token.rb: development: secret_key_base: 79c1389c2fadc5a5a1918a5104ab34eb700c test: secret_key_base: fdb4edcde14173d62963705ca4d7876b5307790924 production: secret_key_base: 85172605030a8225c083d886d066da2cb4aac1f0 但我认为你不能像yml文件中的secret_token.rb那样运行ruby脚本。 […]

哪种标记语言? Markdown还是?

我目前正在寻找在项目中使用的标记语言。 我想允许站点访问者使用标记语言(而不是HTML)编辑类似wiki的页面。 我在Ruby on Rails中实现这个站点,并且更喜欢(尽管没有绑定)使用已经以gemforms提供强大支持的东西。 我在标记语言中寻找一些主要内容: 对于非技术人群来说,它需要易于使用。 它需要安全的跨站点脚本攻击。 它对于wiki页面中的通用标记需要相对有用。 理想情况下,支持将以gem的forms存在。 理想情况下,将存在一个WYSIWYG编辑器(或者至少是一个带有助手的编辑器,如SO上的那个)。 通过对流行标记语言的简短调查,我倾向于选择Markdown,只是因为它似乎在RoR中得到了很好的支持,并且(如果我没有记错的话)它似乎也没有跨站点脚本攻击。 这些有效的观察结果? Markdown的下跌是什么? 在选择标记语言时,您还会关注哪些其他问题? 最重要的是,您会选择哪种标记语言? 任何和所有信息将不胜感激。 作为旁注,我已经看过比较并对比轻量级标记语言并没有直接解决我的问题,但也许对那些看这个问题的人有帮助.—-

保护REST和JSON

我想使用RESTful架构构建我的Web服务来提供JSON数据。 但我只想要我自己的客户端应用程序可以从我的Web服务请求。 基本上,我的Web服务包含非公共消费的敏感数据,但我想以这种方式构建它,以便我可以构建许多连接到我的Web服务的不同客户端应用程序。 非常感谢任何想法,谢谢。