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/