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

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:36:46
字體:
來源:轉載
供稿:網友

前兩天在寫代碼的時候,突然收到警告說項目代碼中存在 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
亚洲第一免费播放区| 九九久久综合网站| 亚洲欧洲一区二区三区在线观看| 国产精品成久久久久三级| 国产一区二区美女视频| 红桃视频成人在线观看| 精品国产依人香蕉在线精品| 庆余年2免费日韩剧观看大牛| 亚洲欧美三级在线| 青青久久aⅴ北条麻妃| 亚洲激情中文字幕| 国产精品一区二区电影| 欧美性jizz18性欧美| 久久人人爽人人爽人人片av高清| 91精品美女在线| 日韩亚洲国产中文字幕| 91欧美激情另类亚洲| 精品无码久久久久久国产| 色综合久综合久久综合久鬼88| 永久免费精品影视网站| 久久久久久亚洲精品| 欧美有码在线视频| 亚洲91精品在线观看| 91探花福利精品国产自产在线| 97久久国产精品| 国产美女91呻吟求| 亚洲欧美综合精品久久成人| 精品视频在线播放免| 青草热久免费精品视频| 91精品久久久久久久久久另类| 国产精品麻豆va在线播放| 欧美精品videossex88| 91精品在线看| 国产精品久久久久久久app| 国产91精品不卡视频| 久久色在线播放| 中文字幕在线成人| 精品久久久久国产| 亚洲国产精品专区久久| 91久久久久久久久久久久久| 欧美亚洲午夜视频在线观看| 日韩精品视频中文在线观看| 久久亚洲精品小早川怜子66| 欧美成人在线免费视频| 国产精品黄色影片导航在线观看| 日韩欧美精品中文字幕| 欧美视频在线观看免费网址| 国产一区欧美二区三区| 亚洲精品98久久久久久中文字幕| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品爱久久久久久久| 亚洲精品99999| 在线亚洲午夜片av大片| 亚洲国产毛片完整版| 久久人体大胆视频| 久久久久久久97| 在线成人中文字幕| 国产欧美 在线欧美| 日本午夜人人精品| 日韩精品高清在线| 欧美亚洲另类激情另类| 欧美日韩国产精品一区二区三区四区| www亚洲欧美| 欧美亚洲在线观看| 一区二区三区视频在线| 奇米成人av国产一区二区三区| 亚洲系列中文字幕| 欧美性猛交xxxx乱大交| 成人a在线观看| 午夜精品久久久久久久99黑人| 精品久久久久久中文字幕| 欧美午夜精品久久久久久人妖| 日韩欧美在线视频日韩欧美在线视频| 欧美在线xxx| 狠狠干狠狠久久| 欧美理论电影在线播放| 日韩中文在线中文网三级| 夜夜嗨av色综合久久久综合网| 成人黄色av播放免费| 亚洲性夜色噜噜噜7777| 成人免费福利视频| 国产精品久久国产精品99gif| 国产精品99蜜臀久久不卡二区| 精品久久久久久久久久久久久久| 欧美一级电影免费在线观看| 91成人在线视频| 国产精品高潮呻吟久久av无限| 亚洲免费av片| 国产一区二区在线免费| 精品成人av一区| 2019av中文字幕| 亚洲香蕉伊综合在人在线视看| 欧美精品精品精品精品免费| 欧美性生交xxxxxdddd| 国产精品久久网| 亚洲综合在线播放| 国产精品成人一区二区三区吃奶| 成人在线视频网站| 久久成人综合视频| 久久久久久国产免费| 国产精品久久久久久久久久久久久久| 亚洲福利在线视频| www日韩中文字幕在线看| 亚洲国产精品热久久| 欧美黄色片在线观看| 亚洲综合社区网| 成人精品在线视频| 欧美乱妇40p| 精品二区三区线观看| 日韩av在线精品| 三级精品视频久久久久| 国产精品久久久av久久久| 亚洲美女自拍视频| 日韩中文理论片| 成人午夜两性视频| www.日韩不卡电影av| 国产成人精品免费久久久久| 中国日韩欧美久久久久久久久| 亚洲三级免费看| 久久精品国产一区二区电影| 岛国av一区二区| 精品视频在线导航| 一区二区三区视频在线| 亚洲自拍欧美另类| 欧美乱妇高清无乱码| 狠狠躁夜夜躁人人躁婷婷91| 久久久www成人免费精品| 久久精品久久久久久国产 免费| 亚洲最大福利视频网| 欧美一区二区大胆人体摄影专业网站| 欧美巨乳美女视频| 国外成人在线直播| 国产狼人综合免费视频| 8x海外华人永久免费日韩内陆视频| www.日韩免费| 欧美第一页在线| 日韩美女视频中文字幕| 欧美激情网站在线观看| 欧美激情久久久| 青青青国产精品一区二区| 国产精品视频一区二区高潮| 成人国产精品日本在线| 亚洲精品国产成人| 精品视频在线播放色网色视频| 国产一区二区丝袜| 国产成人综合久久| 久久精品国产精品| 欧美在线性视频| 亚洲欧美日韩一区二区三区在线| 91av在线不卡| 热门国产精品亚洲第一区在线| 久久91亚洲人成电影网站| 性色av一区二区三区红粉影视| 欧美日韩成人在线观看| 亚洲最大福利视频| 国产午夜精品视频免费不卡69堂| 国产精品久久久久秋霞鲁丝| 97国产真实伦对白精彩视频8| 欧美午夜丰满在线18影院| 国产精品中文字幕久久久| 亚洲国产欧美在线成人app| 性色av香蕉一区二区| 国产丝袜视频一区| 日韩欧美成人精品|