亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

ruby中的雙等號==問題詳解

2020-03-29 11:59:32
字體:
來源:轉載
供稿:網友

前兩天在寫代碼的時候,突然收到警告說項目代碼中存在 XSS 漏洞,遂立即根據報告的 URL 排查頁面代碼,雖然很快就修復了,而且同樣問題的討論兩年前就有了,一般來說相對有經驗的同學也應該都知道這個點,但是還是覺得有必要寫出來,再次提醒一下其他小伙伴,避免踩坑。

問題根源

其中,在找到的漏洞出現的地方,都存在類似以下這樣的 slim 代碼:

input class='xxx' value==params[:account]

問題就出在雙等號 == 上,因為在 slim 跟 ERB 模板(其他模板比如 HAML 之類的就不清楚了)中,雙等號其實是 Rails 的 raw 這個 helper 方法的縮寫

To insert something verbatim use the raw helper rather than calling html_safe:<%= raw @cms.current_template %> <%# inserts @cms.current_template as is %>or, equivalently, use <%==:<%== @cms.current_template %> <%# inserts @cms.current_template as is %>

也就是說上面的代碼等同于:

input class='xxx' value=raw(params[:account])

其中 raw 方法在 Rails 文檔中的解釋是這樣子的:

This method outputs without escaping a string. Since escaping tags is now default, this can be used when you don't want Rails to automatically escape tags. This is not recommended if the data is coming from the user's input.

大概意思就是,這個方法將會跳過對傳入的字符串進行標簽過濾以及其他處理,直接將字符串輸出到 HTML 中。
所以到現在原因就很清晰了,因為不小心在代碼里多加了一個等號,變成了雙等號,導致將會直接把用戶的輸入輸出到待渲染的 HTML 中,在不自知的情況下留下了 XSS 漏洞。于是乎,修復方案僅需去掉一個等號即可:

input class='xxx' value=params[:account]

這樣,Rails 就能繼續自動過濾輸入的 :account 的參數并且自動過濾惡意內容了。

raw、String#html_safe 以及 <%== %>
在查看 raw 方法的文檔時,順便看了其源碼,極其簡單,只有一行:

# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 16def raw(stringish) stringish.to_s.html_safeend

raw 只是先確保將 stringish 參數轉化為字符串,然后調用了 String#html_safe 方法而已。而且在 String#html_safe 的文檔中,同樣反復強調慎重使用這兩個方法:

It will be inserted into HTML with no additional escaping performed. It is your responsibilty to ensure that the string contains no malicious content. This method is equivalent to the raw helper in views.

所以,可以總結一下,以下三種寫法的代碼都是等價的,都是不安全的:

input class='xxx' value==params[:account]input class='xxx' value=raw(params[:account])input class='xxx' value=params[:account].html_safe

那在切實需要輸出包含 HTML 內容比如富文本編輯器編輯的內容時,如何保證安全?
方案很簡單,只需要使用文檔中推薦的 sanitize helper 方法:

It is recommended that you use sanitize instead of this method(html_safe).(#sanitize)Sanitizes HTML input, stripping all tags and attributes that aren't whitelisted.

或者使用一些其他第三方的 gem 用來做過濾處理。

總結

  1. 不要使用雙等號縮寫的方式,以避免其他人(比如項目里的 Rails 新手)在不了解的情況下照著濫用;
  2. 盡可能不用 raw helper 或者 String#html_safe 方法,盡可能使用 #sanitize;
  3. 多借助工具進行自動掃描,比如 brakeman,能夠快速高效檢測出包括 XSS 漏洞在內的多種安全隱患。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
77777亚洲午夜久久多人| 狠狠躁夜夜躁人人爽天天天天97| 亚洲欧洲激情在线| 久久网福利资源网站| 国产脚交av在线一区二区| 国产精品久久久久久影视| 国产一区二区三区丝袜| 日韩av资源在线播放| 亚洲网站在线看| 国产日韩在线精品av| 日韩精品在线免费观看| 日韩在线高清视频| 亚洲97在线观看| 国产一区二区美女视频| 亚洲精品成人久久| 久久精品一本久久99精品| 欧美精品一区二区三区国产精品| 亚洲国产精品va在线看黑人动漫| 日韩精品中文在线观看| 欧美成人精品一区二区三区| 国产精品免费一区豆花| 美女久久久久久久| 91成人天堂久久成人| 欧美精品在线免费播放| 日韩一区二区精品视频| 夜色77av精品影院| 欧美成人精品一区二区三区| 久久激情五月丁香伊人| 国产成人精品久久亚洲高清不卡| 久久久精品久久| 热久久这里只有| 国产精品普通话| 久久久中精品2020中文| 最近2019年日本中文免费字幕| 久久久在线视频| 最近2019好看的中文字幕免费| 日本一区二区在线播放| 日韩极品精品视频免费观看| 精品无人区乱码1区2区3区在线| 国产成人精品在线播放| 成人午夜激情网| 国产欧美日韩精品专区| 欧美精品在线免费| 97香蕉久久夜色精品国产| 91色中文字幕| 欧美精品激情blacked18| 亚洲高清av在线| 久精品免费视频| 亚洲成人a级网| 成人在线视频网| 欧美精品第一页在线播放| 国产精品美乳在线观看| 欧美大尺度激情区在线播放| 欧美日韩色婷婷| 亚洲欧美综合区自拍另类| 成人夜晚看av| 中文字幕亚洲专区| 色综合天天狠天天透天天伊人| 91久久国产精品91久久性色| 亚洲xxxx妇黄裸体| 精品亚洲国产视频| 欧美贵妇videos办公室| 欧美日韩一区免费| 日韩欧美aⅴ综合网站发布| 这里只有精品视频在线| 日韩欧美在线视频观看| 日韩中文字幕久久| 欧美中文字幕第一页| 成人午夜在线影院| 久久这里只有精品视频首页| 国产一区av在线| 欧美寡妇偷汉性猛交| 国内精品伊人久久| 性色av一区二区三区红粉影视| 亚洲欧洲日产国产网站| 国产美女被下药99| 日韩在线播放视频| 久久久天堂国产精品女人| 中文字幕日韩视频| 日韩av不卡电影| 欧美另类精品xxxx孕妇| 日韩在线观看视频免费| 久久久久久久久久久久久久久久久久av| 亚洲桃花岛网站| 久久综合久久八八| 欧美肥臀大乳一区二区免费视频| 欧美精品在线免费| 欧美日韩国产成人高清视频| 亚洲第一免费网站| 欧美日韩亚洲网| 亚洲精品久久久久久久久久久久| 亚洲精品在线看| 91亚洲精品一区| 亚洲伊人久久综合| 日韩精品在线免费| 国内成人精品视频| 欧美成人免费小视频| 欧美日韩裸体免费视频| 国产欧美日韩免费看aⅴ视频| 懂色av一区二区三区| 亚洲成人精品在线| 亚洲成人精品视频在线观看| 久久的精品视频| 亚洲一区中文字幕在线观看| 国产精品视频大全| 69国产精品成人在线播放| 精品综合久久久久久97| 日韩影视在线观看| 亚洲精美色品网站| 国产裸体写真av一区二区| 亚洲新中文字幕| 亚洲天堂av在线免费观看| 最近2019年好看中文字幕视频| 日韩av免费在线播放| 亚洲人午夜色婷婷| 亚洲www永久成人夜色| 成人自拍性视频| 亚洲一区二区三区四区在线播放| 精品高清美女精品国产区| 69av成年福利视频| 日韩欧美国产高清91| 久久免费视频网| 美女久久久久久久久久久| 久久中文字幕在线视频| 精品色蜜蜜精品视频在线观看| 91久久精品国产91久久| 日韩一级黄色av| 久久亚洲影音av资源网| 宅男66日本亚洲欧美视频| 国产视频久久久| 日韩网站免费观看高清| 国产成人免费av电影| 日韩在线视频一区| 国产精品成人播放| 欧美极品在线播放| 日韩美女视频中文字幕| 国产精品狠色婷| 91精品国产91久久| 国模视频一区二区三区| 欧美日韩国产色视频| 亚洲欧美自拍一区| 亚洲中国色老太| 午夜精品一区二区三区av| 亚洲成av人片在线观看香蕉| 欧美一级大片在线免费观看| 亚洲第一区中文99精品| 欧美福利在线观看| 91av在线影院| 69视频在线播放| 久热爱精品视频线路一| 欧美日韩国产丝袜美女| 97色在线视频观看| 日韩精品999| 91av在线影院| 激情成人中文字幕| 亚洲精品大尺度| 日本在线观看天堂男亚洲| 欧美日韩黄色大片| 黑人精品xxx一区一二区| 亚洲视频网站在线观看| www.久久色.com| 正在播放欧美视频| 久久久久国产精品免费| 欧美成人精品三级在线观看|