Rails宝典之第九式: 在日志里过滤敏感数据

这是个安全问题,当我们在系统注册页面输入密码等敏感数据时,我们可以看到,密码以明文的形式显示在日志文件里: 
Java代码   收藏代码
  1. Processing UsersController#create (for 127.0.0.1 at 2007-02-23 19:11:20) [POST]  
  2.   Session ID: 4047778b64af62d387f7e860e51cce20  
  3.   [color=red]Parameters[/color]: {"user" => {"name" => "Ryan""password_confirmation" => "abc123""password" => "abc123"}, "commit" =>   
  4. "Register""action" => "create""controller" => "users"}  
  5.   SQL (0.000108) BEGIN  
  6.   [color=red]SQL[/color] (0.000238) INSERT INTO users ('name''password') VALUES('Ryan''abc123')  
  7.   SQL (0.000395) COMMIT  
  8. Redirected to http://localhost:3000/users/5  
  9. ...  

我们看到Parameters一行密码是明文显示的,这样当然不安全。 

解决方案也十分简单: 
Java代码   收藏代码
  1. class ApplicationController < ActionController::Base  
  2.   filter_parameter_logging "password"  
  3. end  

这样在Parameters那行就会显示"password_confirmation" => "[FILTERED]","password" => "[FILTERED]" 
filter_parameter_logging的方法定义位于action_pack/lib/action_controller/base.rb。 

但是我们也看到SQL一行也是明文密码,我们的filter不会过滤SQL语句,怎么办? 

解决方案是,部署production环境时,日志不会再打印SQL语句,这样就避免了此问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值