rails笔记 安全和其他

SQL injection

默认的rails的 find(xxx) 是过滤了sql 字符串的 但是自己构造condition limit count sql等需要转义,务必使用? 或者:name来传参数,不要直接构造sql

性能配置 fastcgi

timout注意: fastcgi的timeout是强制回收的, 如果一个请求超过timeout会被kill掉 返回500,所以长时间的任务要设置大一点

设置environment WEBrick ./script/server --environment=production Apache/CGI SetEnv RAILS_ENV production

Apache/FastCGI -initial-env RAILS_ENV product

lighttpd/FastCGI "bin-environment" =>("RAILS_ENV"=>"production")

使用link -s 来更换版本的主意真是太COOL了, rails提供的不干扰用户的杀进程法 killall -USR1 dispatch.fcgi

维护

session清理

太多session可能导致严重的文件系统问题和数据库lock

  • 清除12小时内没有访问的session find /tmp/ -name 'ruby_sess*' -ctime +12h -delete

  • 从数据库中清理session RAILS_ENV=production ./script/runner 'ActiveRecord::Base.connection.delete("DELETE FROM sessions WHERE updated_at < now() - 12*3600")'

测试性能

  • ab工具
  • curl/wget
  • siege http://www.joedog.org/siege/

你可能感兴趣的:(Rails)