1. 程式人生 > >PHP XSS攻擊過濾

PHP XSS攻擊過濾

https://gist.github.com/ozkanozcan/3378054  老外寫的

function removeXSS($val) {
   $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
   $search = 'abcdefghijklmnopqrstuvwxyz';
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $search .= '[email protected]#$%^&*()';
   $search .= '~`";:?+/={}[]-_|\'\\';
   for ($i = 0; $i < strlen($search); $i++) {
      $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val);
      $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
   }

//加了個details主要是<details><details> 標籤用於描述文件或文件某個部分的細節。
   $ra1 = Array('details','javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
   $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
   $ra = array_merge($ra1, $ra2);
   $found = true;
   while ($found == true) {
      $val_before = $val;
      for ($i = 0; $i < sizeof($ra); $i++) {
         $pattern = '/';
         for ($j = 0; $j < strlen($ra[$i]); $j++) {
            if ($j > 0) {
               $pattern .= '(';
               $pattern .= '(&#[xX]0{0,8}([9ab]);)';
               $pattern .= '|';
               $pattern .= '|(&#0{0,8}([9|10|13]);)';
               $pattern .= ')*';
            }
            $pattern .= $ra[$i][$j];
         }
         $pattern .= '/i';
         $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
         $val = preg_replace($pattern, $replacement, $val);
         if ($val_before == $val) {
            $found = false;
         }
      }
   }
   return $val;
}

相關推薦

PHP XSS攻擊過濾

https://gist.github.com/ozkanozcan/3378054  老外寫的 function removeXSS($val) {    $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/'

XSS攻擊過濾處理

sca move ogg while 子郵件 oid ole 其他 bst 關於XSS攻擊 XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 XSS漏洞的危害 網絡釣魚,包括盜取各類用戶賬號; 竊取用戶co

php XSS攻擊原理與防禦

資料安全是軟體設計中要考慮的問題,在程式中保持資料的安全,除了保證程式碼內部執行的可靠,最主要就是嚴格控制外部資料,秉持一切使用者輸入的都是不可靠的原則,做好資料的驗證和過濾. PHP最簡單的過濾機制就是轉義,對使用者的輸入和輸出進行轉義和過濾. 我們先搞一

特殊字符的過濾,防止xss攻擊

factor change 源碼 ive ride ray react list css 概念 XSS攻擊全稱跨站腳本攻擊,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算

變量安全過濾,防止xss攻擊

轉義 javascrip dai post ash time return 空格 去除 下面這個方法不管是字符串還是數組,都可以進行過濾 /** * @purpose : 對變量進行安全過濾,使 $_GET、$_POST、$q->record 等變量更安全

php對前臺提交的表單資料做安全處理(防SQL注入和XSS攻擊等)

/** * 防sql注入字串轉義 * @param $content 要轉義內容 * @return array|string */ public static function escapeString($content) { $pa

php 防止XSS攻擊

// 其實就是過濾從表單提交來的資料,使用php過濾函式就可以達到很好的目的。 if (isset($_POST['name'])){ $str = trim($_POST['name']); //清理空格 $str = strip_

儲存型XSS攻擊的簡單處理以及資料庫查詢過濾多個欄位重複資料

 問題:儲存型Xss是由於form表單提交的資料,前端和後臺未進行過濾,將一些javascript的腳步語言存入資料庫中。導致再次查詢資料的時候瀏覽器會執行該腳步語言。如:<script>alert("XSS")</script>。 解決方案:主要是後臺的過

Struts2.3 以及 2.5 過濾 xss攻擊 的一種解決方案

Struts 2.3 本方案採用struts2的攔截器過濾,將提交上來的引數轉碼來解決。 配置struts.xml <package name="default" namespace="

php防止xss攻擊的方法

其實就是過濾從表單提交來的資料,使用php過濾函式就可以達到很好的目的。 <?php   if (isset($_POST['name'])){       $str = trim($_POST['name']);  //清理空格     $str = stri

PHP中防XSS攻擊和防sql注入

SQL注入如何防? TP中的底層已經做了防SQL注入的操作,只要我們操作資料庫時使用TP提供給我們的方法就不會有問題,如新增商品時我們呼叫了add方法。唯一要注意的就是如果我們自己拼SQL執行時就要自己來過濾了。 總結:如果要自己拼SQL語句,一定要自己再過濾一下【add

php防止xss攻擊

攻擊過程          使用者在輸入框中輸入指令碼<script>alert(1)</script>。點選提交後儲存資料庫,在後臺讀取資料時候會彈出1。 解決方法       &n

php安全(二):xss攻擊

XSS 全稱為 Cross Site Scripting,跨站指令碼攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意html程式碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html程式碼會被執行,進而達到某些人的攻擊目的。分類1、XSS反射型攻擊,惡意程式碼並沒有儲存在目標網站

addslashes,htmlspecialchars,htmlentities轉換或者轉義php特殊字元防止xss攻擊以及sql注入

一、轉義或者轉換的目的     1. 轉義或者轉換字串防止sql注入     2. 轉義或者轉換字元防止html非過濾引起頁面佈局變化     3. 轉義或者轉換可以阻止javascript等指令碼的xss攻擊,避免出現類似惡意彈窗等等形式 二、函式     1. addslashes($str

防禦XSS攻擊:基於白名單的富文字XSS後端過濾(jsoup)

簡介: 跨站指令碼攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站指令碼攻擊縮寫為XSS。  攻擊原

PHP如何防止XSS攻擊

PHP防止XSS跨站指令碼攻擊的方法:是針對非法的HTML程式碼包括單雙引號等,使用htmlspecialchars()函式 。在使用htmlspecialchars()函式的時候注意第二個引數, 直接用htmlspecialchars($string) 的話,第二個引數預設

防止XSS攻擊過濾程式碼

function remove_xss($string) {     if (!is_array($string)){        $string = trim($string);        $string = strip_tags($string);       

使用filter過濾xss攻擊

 http://winnie825.iteye.com/blog/1170833 先說一下實現思路: 1. 使用正則表示式的方式實現指令碼過濾,這個方法準確率較高,但是可能根據不能的要求會變動; 2. 為了保證配置靈活(包括正則表示式靈活),使用xml配置檔案的方式記錄配置資訊,配置資訊包含是否開啟

預防XSS攻擊,(引數/響應值)特殊字元過濾

一、什麼是XSS攻擊 XSS是一種經常出現在web應用中的電腦保安漏洞,它允許惡意web使用者將程式碼植入到提供給其它使用者使用的頁面中。比如這些程式碼包括HTML程式碼和客戶端指令碼。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same or

關於xss攻擊

訪問者 登錄 pan 文章 數據 參數 innerhtml 興趣 成功 關於xss攻擊 網上相關的介紹很多,一搜索也是一大堆,這裏我就對自己感興趣的一些內容做個總結。 成因:xss是將惡意代碼(多是JavaScript)插入html代碼中。 分類: 1、 反射型 2