博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RailsCasts中文版,#9 Filtering Sensitive Logs 遮盖日志中记录的敏感信息
阅读量:4956 次
发布时间:2019-06-12

本文共 1803 字,大约阅读时间需要 6 分钟。

这是一个用户注册页面,填入用户名和密码按确认提交。

查看后台日志的话,能够发现所有页面提交的参数都是以明文方式保存在日志中的。

Processing UsersController#create (for 127.0.0.1 at 2009-01-02 10:13:13) [POST]Parameters: {"user"=>{"name"=>"eifion", "password_confirmation"=>"secret", "password"=>"secret"}, "commit"=>"Register", "authenticity_token"=>"9efc03bcc37191d8a6dc3676e2e7890ecdfda0b5"}User Create (0.5ms)   INSERT INTO "users" ("name", "updated_at", "password_confirmation", "password", "created_at") VALUES('eifion', '2009-01-02 10:13:13', 'secret', 'secret', '2009-01-02 10:13:13')

在日志中记录这种敏感信息的方式肯定是有安全隐患的。从Rails1.2开始,在ApplicationController中增加了filter_parameter_logging方法。可以通过名字指定对输出到日志的内容进行保护。

class ApplicationController < ActionController::Base  filter_parameter_logging "password" end

再往后的Rails版本中,都会缺省加入这句过滤条件,只不过是备注释着的。可以去掉注释以便开启这个特性。重新刷新页面,查看日志内容。

Processing UsersController#create (for 127.0.0.1 at 2009-01-02 11:02:33) [POST]  Parameters: {"user"=>{"name"=>"susan", "password_confirmation"=>"[FILTERED]", "password"=>"[FILTERED]"}, "commit"=>"Register", "action"=>"create", "authenticity_token"=>"9efc03bcc37191d8a6dc3676e2e7890ecdfda0b5", "controller"=>"users"}  User Create (0.4ms)   INSERT INTO "users" ("name", "updated_at", "password_confirmation", "password", "created_at") VALUES('susan', '2009-01-02 11:02:33', 'verysecret', 'verysecret', '2009-01-02 11:02:33')

可以看到,日志中password的值被[FILTERED]遮盖住了,不再以明文显示。需要注意的是,这个特性会对所有参数名中包含那些定义在filter_parameter_logging方法中字符的变量生效。比如说,password_confirmation参数的值也被遮盖后才计入日志的。虽然能在SQL语句中看到明文,但请放心的是,这只是开发模式下才会有的内容,发布模式(product)下不会记录SQL语句。再说,本来也不应该向数据库中存放明文密码,而是应该加密混淆后在入库。

作者授权:Your welcome to post the translated text on your blog as well if the episode is free(not Pro). I just ask that you post a link back to the original episode on .

原文链接:

转载于:https://www.cnblogs.com/abbuggy/archive/2012/11/24/2786446.html

你可能感兴趣的文章
Java基础常见英语词汇
查看>>
iOS并发编程笔记【转】
查看>>
泛型 T的定义<1>
查看>>
thinkphp dispaly和fetch的区别
查看>>
08号团队-团队任务5:项目总结会
查看>>
mybatis 插入数据 在没有commit时 获取主键id
查看>>
SQL2005 删除空白行null
查看>>
lightoj 1030 概率dp
查看>>
重新注册.NET
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
Vagrant入门
查看>>
python and 我爱自然语言处理
查看>>
第3讲:导入表的定位和读取操作
查看>>
echarts-柱状图绘制
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
VS2013试用期结束后如何激活
查看>>
边框圆角Css
查看>>
SQL 能做什么?
查看>>
java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
查看>>