首頁  >  文章  >  php框架  >  thinkphp過濾xss

thinkphp過濾xss

步履不停
步履不停原創
2019-06-13 10:18:244920瀏覽

thinkphp過濾xss

什麼是XSS:這裡通俗的講,就像是SQL注入一樣,XSS攻擊也可以算是對HTML和JS的一種注入。你本來希望得到是從用戶那得到一段有用的文本文字,但用戶提交給你的卻是別有用心的可執行javasc ript或其它腳本(這裡並沒有把破壞樣式或文檔文本當作攻擊),當你再把這些提交的內容顯示到頁面上時,XSS攻擊就發生了。

關於XSS的攻擊方式和場景層出不窮,本文也只是做的普及一些基本的安全防護知識(不涉及flash腳本攻擊),如果想徹底研究這種攻擊方式推薦一本書631fc177d37fa77b9da7324736ddf59b>,如果沒時間看書的話就把本文看完吧。

本文的需掌握的基礎知識:cookie,session工作原理,對TP框架有一定了解。

1:抵禦99%的攻擊方式,適用於90%的場景.

當網站不涉及複雜的使用者互動時,可以對使用者所有提交的文字進行htmlspecialchars函數處理。

THINKPHP3.2版本中的操作步驟是:

一:在專案設定檔中新增設定: 'DEFAULT_FILTER' => ; 'htmlspecialchars', //預設篩選函數

二: 使用框架帶的I方法取得來自使用者提交的資料;

範例:M('Member' )->save(array('content'=>I('post.content')));這樣加入的content內容是經過htmlspecialchars處理過的.

問題:為什麼經過htmlspecialchars處理過的文字可以保證是安全的?

回答:縱觀XSS各種攻擊方式絕大多數依賴a8093152e673feb7aba1828c43532094'"& 這幾個字元中的一個或幾個對內容進行注入攻擊。而htmlspecialchars函數的作用就是將這些字元轉換成無害的HTML 實體;

提問:為什麼有這麼好的方法,還有好多網站還是被攻擊.

回答:因為好多程式設計師總是會粗心忘記使用這個方法,而遺漏某條資料的過濾。

2:對COOKIE進行IP綁定

#cookie裡面一般有自動登入資訊和session_id,就算對cookie裡面的內容全部加了密,cookie的資訊一但被別人透過XSS攻擊取得後也一樣等同於把自己的帳號密碼給了別人。

對cookie進行IP綁定,(當然也可以取得使用者客戶端更多的其它資訊進行同時綁定)可以根據使用者的IP來判斷這個cookie是不是來原始授權使用者。

典型的應用範例:

  1. ##當使用者設定了自動登入時儲存自動登入資訊:


  2. $auto=I('post.auto');//用户设置了自动登录
    if(!empty($auto)){
    cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周
    }
  3. 使用者關閉瀏覽器再次造訪網站時,進行自動登入


  4. if (!is_login()) {//是否未登录状态?
    $auth=cookie('auto');
    if(!empty($auth)){//是否未有自动登录cookie?
    $data=unserialize(decrypt($auth));
    if(!empty($data) && !empty($data['username']) && !empty($data['password']) && !empty($data['last_login_ip'])){
    $user=M('Member')->where(array('username'=>$data['username'],'password'=>$data['password']))->find();
    if(!empty($user['id'])&&($user['last_login_ip']==get_client_ip())){//cookie帐号密码是否有效?//IP来源是否相同?
    login_session($user['id'], $user['username'], $data['last_login_ip']);//用户自动登录成功
    }
    }
    }
    }

#優點:大多數場景下可使被XSS攻擊盜取的cookie失效。缺點:由於IP存在多台電腦共用的可能,因此對綁定做不到十分精細。

3:為COOKIE新增httponly設定

  1. 最新版本的thinkphp已經支援此參數。

  2. 此參數可以保證cookie只在http請求中被傳輸,而不被頁面中的腳本獲取,現市面上絕大多數瀏覽器已經支援。

4:HTML5值得觀註的新功能:

  1. 43076b0fbca62c2e6fd1483eea52e4d9

  2. 為iframe的增加的sandbox屬性,可以防止不信任的Web頁面執行某些操作.相信這個方法以後會被廣泛使用。

5:富文本過濾

  1. #富文本過濾是,XSS攻擊最令人頭痛的話題,不僅是小網站,就連BAT這樣的巨頭也是三天兩頭的被其困擾.

#更多ThinkPHP相關技術文章,請訪問ThinkPHP使用教學欄位進行學習!

以上是thinkphp過濾xss的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn