浏览 3260 次
锁定老帖子 主题:安全性問題提報
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-09
但是很容易被假表單修改原本不該被開放的資料 當我們用 model.create( HASH ) 或是 model.update_attributes( HASH ) 的時候 被使用者做偽造的表單修改了原本我們沒有開放的欄位修改 http://manuals.rubyonrails.com/read/chapter/47 <-- 官方網站中有一個 solution 可以解決這個問題 在 model 中加上保護的欄位名, 可以防止當我們依賴 params[:table_name] 欄位來建立資料表時, 被惡意的 使用者修改掉需要被保護的欄位 attr_protected :approved, :role 不才小弟偷偷在 JavaEye 做了這個測試, 希望站長回復一下我的 username 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-10
<h1>abyssband</h1> 写道 RoR 的 params[:table_name] 用來創建新資料非常簡單, 且簡潔
但是很容易被假表單修改原本不該被開放的資料 當我們用 model.create( HASH ) 或是 model.update_attributes( HASH ) 的時候 被使用者做偽造的表單修改了原本我們沒有開放的欄位修改 http://manuals.rubyonrails.com/read/chapter/47 <-- 官方網站中有一個 solution 可以解決這個問題 在 model 中加上保護的欄位名, 可以防止當我們依賴 params[:table_name] 欄位來建立資料表時, 被惡意的 使用者修改掉需要被保護的欄位 attr_protected :approved, :role 不才小弟偷偷在 JavaEye 做了這個測試, 希望站長回復一下我的 username 这个安全隐患我心里一直清楚,不过一直幻想大家不知道。唉~还是被人发现了。改起来比较麻烦,所有的model都要加attr_accessible来确保只暴露可修改的字段。attr_protected还不够安全,就是这个改动涉及影响面太大,所以一直拖着,这个周末争取改掉。 |
|
返回顶楼 | |
发表时间:2007-03-10
robbin 写道 这个安全隐患我心里一直清楚,不过一直幻想大家不知道。唉~还是被人发现了。改起来比较麻烦,所有的model都要加attr_accessible来确保只暴露可修改的字段。attr_protected还不够安全,就是这个改动涉及影响面太大,所以一直拖着,这个周末争取改掉。 請教一下 robbin 大大, 如果用 attr_protected 還會有那些安全上的隱憂呢? 因為我測試過後, 發現一些想偷懶利用 params 對 model 寫入的項目通常沒有太多需要檢查的地方 唯一想要防止的是預期外的寫入 另外小弟想再請教一個問題, 為什麼 strip_tags 這個 function 沒有定義在 ActionController 的 scope 中呢 難到在 controller 中不太需要用到 strip_tags 這種過濾字串的函式嗎? 如果小弟在必要的時後, 可不可以對 Params Hash 中 element 做一次過濾, 不知道效能損耗會不會太大 EX: params[:user].each do |k,v| params[:user][k] = strip_tags(v) if v.class == String end 請問這樣的一段代碼, 在 ruby 中執行起來會不會很吃重... 小弟是 ruby 初學者, 對 ruby 還不太熟, 望請 robbin 兄多多指教 |
|
返回顶楼 | |
发表时间:2007-03-10
像rich editor之类,还是允许你保存html text的,只不过在显示出来的时候才过滤,我想这是为什么在ActionView里面提供的原因吧。
不会影响性能 |
|
返回顶楼 | |
发表时间:2007-03-10
white_list 可以一用
|
|
返回顶楼 | |