<textarea dropzone='6k9r4be'><optgroup lang='ho6gtf'></optgroup></textarea>

            <q draggable='a627xaso'><u id='fgn6vh3'></u></q>
          1. <code date-time='5g7e4524'></code>

                1. 文章熱詞:XSS攻擊

                  日期:2019-10-11 09:27 by 楊國偉 1909 0 收藏
                  我要分享

                  摘要:XSS又稱CSS,全稱Cross SiteScript(跨站腳本攻擊), XSS攻擊類似于SQL注入攻擊,是Web程序中常見的漏洞,XSS屬于被動式且用于客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當用戶浏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie信息、破壞頁面結構、重定向到其它網站等。

                  理論上,隻要存在能提供輸入的表單并且沒做安全過濾或過濾不徹底,都有可能存在XSS漏洞。

                  下面是一些最簡單并且比較常見的惡意字符XSS輸入:

                  1.XSS 輸入通常包含 JavaScript 腳本,如彈出惡意警告框:<script>alert("XSS");</script>

                  2.XSS 輸入也可能是 HTML 代碼段,譬如:

                  除了通過正常途徑輸入XSS攻擊字符外,還可以繞過JavaScript校驗,通過修改請求達到XSS攻擊的目的,如下圖:


                  640_wps圖片.jpg

                  了解到XSS攻擊的原理和危害後,其實要預防也不難,下面提供一個簡單的PHP防止XSS攻擊的函數:

                  <?PHP
                  /**
                   * @param $string
                   * @param $low 安全别級低
                   */
                  function clean_xss(&$string, $low = False)
                  {
                   if (! is_array ( $string ))
                   {
                   $string = trim ( $string );
                   $string = strip_tags ( $string );
                   $string = htmlspecialchars ( $string );
                   if ($low)
                   {
                    return True;
                   }
                   $string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
                   $no = '/%0[0-8bcef]/';
                   $string = preg_replace ( $no, '', $string );
                   $no = '/%1[0-9a-f]/';
                   $string = preg_replace ( $no, '', $string );
                   $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
                   $string = preg_replace ( $no, '', $string );
                   return True;
                   }
                   $keys = array_keys ( $string );
                   foreach ( $keys as $key )
                   {
                   clean_xss ( $string [$key] );
                   }
                  }
                  //just a test
                  $str = 'codetc.com<meta http-equiv="refresh" content="0;">';
                  clean_xss($str); //如果你把這個注釋掉,你就知道xss攻擊的厲害了
                  echo $str;
                  ?>

                  PHP中的設置

                  PHP5.2以上版本已支持HttpOnly參數的設置,同樣也支持全局的HttpOnly的設置,在php.ini中

                  -----------------------------------------------------
                  session.cookie_httponly = 
                  -----------------------------------------------------

                  設置其值爲1或者TRUE,來開啓全局的Cookie的HttpOnly屬性,當然也支持在代碼中來開啓:

                  <?php 
                  ini_set("session.cookie_httponly", 1);  
                  // or session_set_cookie_params(0, NULL, NULL, NULL, TRUE);  
                  ?>

                  Cookie操作函數setcookie函數和setrawcookie函數也專門添加了第7個參數來做爲HttpOnly的選項,開啓方法爲:


                  <?php 
                  setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);  
                  setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 
                  ?>

                  上一篇:一個 TCP 連接可以發多少個 HTTP 請求?

                  下一篇:什麽是單點登錄,php是如何實現單點登錄的


                  評論