<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    于吉吉的技術博客

    建造高性能門戶網

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks
    對很久以前的一個bug進行分析和總結

         function parsePost(data, action) {
             
    try {
                 
    var postData = eval("(" + data + ")");
                 
                 
    // TO DO1
             } catch (e) {
                 
                 
    // TO DO2
             }
         }


    這是一段頁面的老代碼,data是數據庫body字段,既是用戶錄入并取出的數據,由于業務的關系,data是以json格式保存的,為了使數據能實現兼容,這里使用try...catch...方式處理,如果變量data能被轉換成對象,則執行TO DO1,否則執行TO DO2.
    我們知道eval的作用很簡單,就是把一段字符串傳遞給js解析器,由javascript解析器將這段字符串解釋成為javascript代碼,并且執行.不過這也是非常危險,尤其是在給它傳遞用戶輸入的數據時,這往往就是惡意用戶的一個切入點.
    安裝上面的代碼,如果用戶輸入的data是一段js代碼,如"alert('hello')",那么這段代碼用數據庫出來后顯示部分就會eval("alert('hello')"),這時我的頁面就會以alert提示框的方式彈了出來.

    好了,這個就是大家都知道的 Cross-site scripting (XSS),中文翻譯是跨站腳本攻擊。

    Cross-site scripting (XSS) is a type of computer security vulnerability typically found in web applications which allow code injection by malicious web users into the web pages viewed by other users. Examples of such code include HTML code and client-side scripts. (摘自《Cross-site scripting》http://en.wikipedia.org/wiki/Cross- site_scripting)這里介紹了 XSS 的背景,類型,利用和防范等幾方面內容。

    下面開始修復工作。這段代碼顯然沒能對 data 作好嚴格的判斷工作,data 不但是用戶輸入的內容,還要被似乎萬惡的 eval() 函數執行,而整個過程沒有對 用戶輸入的 data 進行一個校驗工作,這就是問題所在,而且問題相當嚴重。

    針對跟貼系統此段代碼的業務邏輯,可以通過判斷 data 的數據類型來確定其邏輯結構,更改后的代碼如下∶

         function parsePost(data, action) {
             
    if (typeof(data) == 'string') {
                 
                 
    // TO DO2
             }
             
    else {
                 
    // TO DO1
             }
         }


    代碼在主體上修改如上,我們的選擇是,繞開 eval() 函數,把 body 的原型賦給 Javascript 的變量 data,然后使用 typeof() 來對 data 作判斷處理,并且根據此判斷繼續下一步的處理。
    另外也可以是使用 JSON 解析器對 JSON 進行解析,可從http: //www.json.org/json.js 下載的參考實現腳本。JSON 是一種基于文本的開放式數據交換格式(請參見 RFC 4627)。

    ps:此bug發生在2008年,跟帖受xss攻擊
    posted on 2010-12-15 11:31 陳于喆 閱讀(4359) 評論(2)  編輯  收藏 所屬分類: web開發

    評論

    # re: Javascript eval()使用上需要注意的安全問題[未登錄] 2015-12-06 14:33 啊啊
    alert(1)  回復  更多評論
      

    # re: Javascript eval()使用上需要注意的安全問題[未登錄] 2016-05-19 10:03 123
    454564564564  回復  更多評論
      

    主站蜘蛛池模板: 97亚洲熟妇自偷自拍另类图片| 亚洲综合无码AV一区二区 | 亚洲v高清理论电影| igao激情在线视频免费| 国产在线观看免费视频播放器| 青草久久精品亚洲综合专区| 日韩免费观看的一级毛片| 亚洲精品无码人妻无码| 免费国产美女爽到喷出水来视频| 久久亚洲精品高潮综合色a片| 国产免费怕怕免费视频观看| 一级毛片一级毛片免费毛片 | 久久精品国产亚洲av麻| 免费人成在线观看网站品爱网| 亚洲男人的天堂在线播放| 亚洲视频免费观看| 亚洲人成色4444在线观看| 免费大香伊蕉在人线国产| 巨胸狂喷奶水视频www网站免费| 亚洲乱码国产乱码精品精| 久久国产免费观看精品3| 亚洲av产在线精品亚洲第一站| 成人永久免费福利视频网站| 香蕉视频在线观看免费| 国产亚洲一区二区在线观看 | 成年女人18级毛片毛片免费| 老子影院午夜伦不卡亚洲| 怡红院亚洲怡红院首页| 99视频免费播放| 国产成人高清亚洲一区91| 亚洲gv白嫩小受在线观看| 四虎影视www四虎免费| 国产99久久久国产精免费| 亚洲成人在线免费观看| 亚洲成a人片在线播放| 男人进去女人爽免费视频国产| 中文文字幕文字幕亚洲色| 久久久久亚洲精品男人的天堂| 欧洲一级毛片免费| 人成午夜免费大片在线观看| 亚洲欧洲日韩在线电影|