小编Kyl*_*yle的帖子

Rails 4:会话到期?

我刚刚从Rails 3.2切换到Rails 4.我正在努力确保我在安全问题上尽可能快速,并且我现在关注会话.看起来Rails 4已经远离支持任何除了基于cookie的会话以外的任何东西,但听起来似乎不可能阻止基于cookie的会话永远存在.我一直在阅读几篇文章,但这篇文章是最正式的:http://guides.rubyonrails.org/security.html#session-expiry.请注意他们如何指出这是基于cookie的会话的问题,然后他们为基于数据库的会话(现在已经弃用,显然)提供了修复.

我真的很困惑.我希望能够阻止攻击者获得一个cookie,使他能够永久访问我的登录保护站点.显然我可以在initializers/session_store.rb中设置:expire_after,但除非我错了,只是设置客户端的cookie过期并且很容易被攻击者修改,以便会话可以永久存在.当然,我可以通过强制SSL,使用安全cookie和仅强制HTTP来使事情变得更好,但在我可以强制执行会话到期之前,这绝不是完整的防御.

当Rails弃用服务器端会话的唯一方法时,如何解决此问题?

我知道活动记录会话已被转移到gem并且仍然可用,但事实仍然是它已被弃用.应该可以在不引入更多依赖关系的情况下实现解决方案,或者至少不使用已弃用的功能.

cookies session ruby-on-rails-4

30
推荐指数
2
解决办法
2万
查看次数

为Windows CE编译Boost 1.47

实际上有一些关于人们试图为Windows CE构建Boost库的信息,但没有人报告成功,甚至没有给出这样做所需的步骤.有了这两个最新版本(1.46和1.47),发行说明中提到他们的一个测试编译器是"Visual C++,Windows Mobile 5,STLport:9.0",这似乎意味着已经取得了成功(作为旁注)给出的编译器很有意思,因为我能够下载的最新STLPort是5.2.1.我错过了什么?).

我发现的帖子似乎围绕着这里包含的文件:http://www.boost.org/development/tests/trunk/VeecoFTC.html.问题是,老实说,我不知道如何使用它.我能够为Windows CE构建STLPort,但是按照Boost入门指南(http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html),我陷入了Boost.Build阶段.此时我是否需要配置为CE编译?我只是不知道采取什么步骤,并希望得到一些指导.

这是我到目前为止所遵循的步骤:

  1. 为Windows CE编译STLPort(文档相当不错,这并不太难).
  2. 根据入门指南安装Boost.Build.我在这一步上有点不稳定,因为bootstrap.bat文件似乎特定于"ntx86"和"ntx86_64".我已经搞砸了吗?

在这一点上,假设我已经完成了正确的事情,我需要用类似的东西运行b2

b2 --build-dir=build-directory toolset=toolset-name --build-type=complete stage
Run Code Online (Sandbox Code Playgroud)

我假设我的构建目录是我用于Boost.Build的前缀,构建类型和阶段将保持给定,但我不知道要使用什么工具集名称.VeecoFTC文件有多个msvc和stlport条目.我删除了与"wm5"无关的两个条目,但是当我使用以下命令编译时

b2 --build-dir=C:\boost-build toolset=msvc --build-type=complete stage
Run Code Online (Sandbox Code Playgroud)

我得到一堆错误,如:

compile-c-c++ C:\boost-build\boost\bin.v2\libs\regex\build\msvc-9.0~wm5~stlport5.2\debug\threading-multi\has_icu_test.obj
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

实际上,该文件不存在,但has_icu_test.obj.rsp存在.我错过了什么吗?我是否走在正确的轨道上?

更新:

由于我无法让Boost.Build工作并且在Boost.Build邮件列表上没有爱,我已经开始尝试使用Boost的CMake构建系统:http://gitorious.org/boost/cmake.我和CEgcc一起使用它(我比Linux更熟悉Linux),我遇到了以下错误:

boost/config/requires_threads.hpp:47:5: error: #error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
Run Code Online (Sandbox Code Playgroud)

-mthreads是C和CXX标志的一部分 - 问题是BOOST_PLATFORM_CONFIG不是由boost/config/select_platform_config.hpp定义的.应该为Windows CE定义什么?我认为它应该是boost/config/platform/win32.hpp(然后定义BOOST_HAS_WINTHREADS,这将解决上述错误).当select_platform_config.hpp似乎无法处理Windows CE案例时,发行说明如何声称这可行?如果BOOST_PLATFORM_CONFIG确实需要是boost/config/platform/win32.hpp,那么我需要定义_WIN32,WIN32或WIN32.我的第一反应是这些都不应该用于编译CE.此外,VeecoFTC文件不包含任何这些.它是如何工作的?

c++ boost windows-ce

14
推荐指数
1
解决办法
3370
查看次数

GitLab CI和分布式构建混乱

我对持续集成服务器比较陌生.我一直在使用GitLab(v6.5)来管理项目,但我想开始使用GitLab CI来确保测试通过并且构建成功.

我的测试设置包括两个虚拟机:一台用于GitLab,另一台用于GitLab CI(和跑步者).但是,在生产中我只有一台机器,它正在运行GitLab.GitLab团队发布了一篇有趣的博客文章,强调:

如果您在CI服务器上运行测试,那么您做错了!

这是一个非常翔实的帖子,但我并没有感觉到我理解这个特定点.这是否意味着不应该在同一台服务器上运行GitLab和GitLab CI?这是否意味着不应该在同一台服务器上运行GitLab CI和GitLab CI运行器?或者两者兼而有之 - 我是否需要三台服务器,每项任务一台?

来自同一篇文章:

任何可以推送到CI服务器上测试的分支的人都可以轻松拥有该服务器.

这对我来说意味着跑步者是安全风险,因为他们可以运行提交中包含的东西.如果是这种情况,那么典型的实施是什么?把GitLab和GitLab CI放在同一台机器上,但是跑步者在一台单独的机器上?如果跑步机受到损害,它还不会吮吸吗?所以只要他们的代码机安全,人们可以丢失他们的跑步机吗?

我真的想更多地理解这一点 - 绝对在我在生产中实现它之前.有没有可能安全的方法在同一台机器上实现GitLab,GitLab CI和GitLab CI跑步者?

gitlab gitlab-ci

6
推荐指数
1
解决办法
1459
查看次数

使用嵌套属性保存一对多模型

使用Rails 4和Ruby 2.1.

说我有两个模型,团队和玩家.它们看起来像这样:

team.rb:

# == Schema Information
#
# Table name: teams
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class Team < ActiveRecord::Base
    has_many :players

    accepts_nested_attributes_for :players
end
Run Code Online (Sandbox Code Playgroud)

player.rb:

# == Schema Information
#
# Table name: players
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  team_id    :integer
#  created_at :datetime
#  updated_at :datetime
#

class Player < ActiveRecord::Base
    belongs_to :team
end
Run Code Online (Sandbox Code Playgroud)

超级简单.我可以毫无困难地做到以下几点: …

ruby-on-rails ruby-on-rails-4

2
推荐指数
1
解决办法
500
查看次数