1. 程式人生 > >防止SQL注入和XSS跨站攻擊程式碼

防止SQL注入和XSS跨站攻擊程式碼

這兩天用360網站安全檢測網站,檢測出SQL注入漏洞和XSS跨站攻擊指令碼N多項bug,然後上網找各種資料,把大部分的資料都看了一遍,最後自己總結了如下程式碼:

a、防止SQL注入程式碼:

//防止SQL注入 hxm_20140701  只對字串有效
function clean_SQLinject($string){
	if(!get_magic_quotes_gpc()){
		$string = mysql_real_escape_string($string);
		$string = addslashes($string);
	}
	$string = str_replace("_","\_",$string);
	$string = str_replace("%","\%",$string);
	return $string;
}

b、防止XSS跨站攻擊程式碼:

//防止xss跨站攻擊 hxm_20140701  陣列或字串都有效
function clean_xss(&$string){
	if(!is_array($string)){
		$string = trim($string);
		$string = strip_tags($string);
		$string = htmlspecialchars($string);
		$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]);
	}
}

c、後來改檔案時候很多地方的查詢語句的where條件用到了大量post或get過來的引數,一個一個過濾閒太麻煩,所以發明瞭如下函式:

d、對傳過來的post和get引數組直接過濾,包含過濾SQL注入和XSS攻擊:

//對傳過來的整個post陣列進行SQL注入和XSS過濾   hxm_20140701
function clean_post($post) {  
  if(!get_magic_quotes_gpc()){    // 判斷magic_quotes_gpc是否為開啟  
    $post = addslashes($post);    // 進行magic_quotes_gpc沒有開啟的情況對提交資料的過濾  
  }  
  $post = str_replace("_", "\_", $post);    // 把 '_'過濾掉  
  $post = str_replace("%", "\%", $post);    // 把 '%'過濾掉  
  $post = nl2br($post);    // 回車轉換  
  $post = htmlspecialchars($post);    // html標記轉換 防止xss 
 
  return $post;  
}

備註(關於XSS):

1、php防止XSS跨站指令碼攻擊的方法:是針對非法的HTML程式碼包括單雙引號等,使用htmlspecialchars()函式 。

2、在使用htmlspecialchars()函式的時候注意第二個引數, 直接用htmlspecialchars($string) 的話,第二個引數預設是ENT_COMPAT,函式預設只是轉化雙引號(“), 不對單引號(‘)做轉義.

3、所以,htmlspecialchars函式更多的時候要加上第二個引數, 應該這樣用: htmlspecialchars($string,ENT_QUOTES).當然,如果需要不轉化引號,用htmlspecialchars($string,ENT_NOQUOTES).

4、另外, 儘量少用htmlentities, 在全部英文的時候htmlentities和htmlspecialchars沒有區別,都可以達到目的.但是,中文情況下, htmlentities卻會轉化所有的html程式碼,連同裡面的它無法識別的中文字元也給轉化了。

5、htmlentities和htmlspecialchars這兩個函式對 '之類的字串支援不好,都不能轉化, 所以用htmlentities和htmlspecialchars轉化的字串只能防止XSS攻擊,不能防止SQL注入攻擊.

相關推薦

防止SQL注入XSS攻擊程式碼

這兩天用360網站安全檢測網站,檢測出SQL注入漏洞和XSS跨站攻擊指令碼N多項bug,然後上網找各種資料,把大部分的資料都看了一遍,最後自己總結了如下程式碼: a、防止SQL注入程式碼: //防止S

asp.net 360通用防護程式碼,防止sql注入xss漏洞攻擊

這是360提供的一個aspx公用程式碼,可以防止sql注入漏洞,xss跨站攻擊漏洞,如果您的網站被360掃描,出現sql注入或跨站攻擊等相關漏洞,沒有較好的解決方案,倒是可以採用該方法進下防範。 -----------------使用方法------------

JAVA WEB中處理防SQL注入|防XSS指令碼攻擊(咋個辦呢 zgbn)

JAVA WEB中處理防SQL注入|防XSS跨站指令碼 在java web專案中,必然會涉及到從客戶端向服務端提交資料,那麼由於服務端對資料的處理等動作,會因為字串拼接和使用的特殊性,存在一些漏洞被人利用。 這篇文章,主要介紹一下在java web專案中,程

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

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

SQL注入XSS攻擊

SQL注入: 所謂SQL注入,就是通過把SQL命令插入到提交的Web表單或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令,導致資料庫中的資訊洩露或者更改。 防範: 1.永遠不要信任使用者的輸入,將使用者輸入的資料當做一個引數處理: 使用引數化的形式,也就是將使用者輸入的東西以一

springboot-防止sql注入xss攻擊,cros惡意訪問

springboot-防止sql注入,xss攻擊,cros惡意訪問 文章目錄 springboot-防止sql注入,xss攻擊,cros惡意訪問 1.sql注入 2.xss攻擊 3.csrf/cros 完

ThinkPHP防範XSS攻擊

原理是通過URL傳入script標籤,ThinkPHP異常錯誤頁面直接輸出了script。原理: httpx://www.example.com/index.php?m=">< script>alert('xss');< /script&g

WordPress4.8.1版本存在XSS攻擊漏洞

2017年10月19日,阿里雲安全威脅情報系統監測到WordPress 官方釋出了一條安全通告表示在4.8.1版本中發現了一個儲存型的XSS漏洞,通過該漏洞,攻擊者可以在受影響網站的評論區寫下包含惡意程式碼的留言,當該留言頁面被開啟時,其中的惡意程式碼會執行,導致該網站的許可權,外掛等被更改,甚至被完

二十七:XSS程式碼及httponly繞過

![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123085721174-937912649.png) **httponly:如果給某個 cookie 設定了 httpOnly 屬性,則無法通過 JS 指令碼 讀取到該 coo

sql注入指令碼攻擊

網站Web攻擊,主要有:sql注入,css攻擊,跨站指令碼攻擊,掛馬,緩衝區溢位等。         1.  sql注入:即通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令,比如先前的很多影視網站洩露VIP會員密碼

用Snort巧妙檢測SQL注入指令碼攻擊

指令碼攻擊是最近網路上最瘋狂的攻擊方法了,很多伺服器配置了先進的硬體防火牆、多層次的安全體系,可惜最後對80埠的SQL注入和跨站指令碼攻擊還是沒有辦法抵禦,只能看著資料被惡意入侵者改的面目全非而毫無辦法——把你的Snort武裝起來吧,用它來檢測這樣的攻擊! 我們將以使用開放原

WAF——針對Web應用發起的攻擊,包括但不限於以下攻擊類型:SQL註入、XSS、Webshell上傳、命令註入、非法HTTP協議請求、非授權文件訪問等

授權 文件訪問 http協議 火墻 針對 str sql 包括 fire 核心概念 WAF Web應用防火墻(Web Application Firewall),簡稱WAF。 Web攻擊 針對Web應用發起的攻擊,包括但不限於以下攻擊類型:SQL註入、XSS跨站、Websh

記錄一次網站漏洞修復過程(三):第二輪處理(攔截SQL註入、腳本攻擊XSS

cat nbsp ebe 嵌入 網頁 防止 記錄 用戶輸入 light 在程序編寫的時候采用參數化的SQL語句可以有效的防止SQL註入,但是當程序一旦成型,再去修改大量的數據庫執行語句並不是太現實,對網頁表單上輸入進行校驗是易於實現的方法。在webForm 頁面中開啟校驗屬

sql注入攻擊PreparedStatement有效防止sql注入攻擊

【1】sql注入攻擊: /** * SQL 注入. */ @Test public void testSQLInjection() { String username = "a' OR PASSWORD = "; String password = " OR '1'='1

VS2008.NET對ashx頁面防止攻擊XSS

首先,給大家貼出解決方案,很簡單,只需要加一句程式碼就OK。 context.Request.ValidateInput(); 最近專案中做了一個ashx的頁面向其他人提供一個ajax的介面,介面呼叫使用到了jsonp的方式,當時也沒考慮太多,直接將接收到的引數原樣寫回到

很好用的 web防止sql 注入 xss 攻擊 目錄遍歷程式碼

最近公司網站被黑的嚴重,在專案入口問價加入次下程式碼有很好的效應,自己又加了一些程式碼方便一會檢視 <?php /*雲體檢通用漏洞防護補丁v1.1 更新時間:2013-05-25 功能說明:防護XSS,SQL,程式碼執行,檔案包含等多種高危漏洞 */ $url_arr

JAVA覆寫Request過濾XSS腳本攻擊

getpara header term implement nbsp super exceptio stream elements 註:本文非本人原著。 demo的地址:鏈接:http://pan.baidu.com/s/1miEmHMo 密碼:k5ca 如何過濾

XSS腳本攻擊

截取 inner 掛載點 site 斜線 谷歌 system coo 地址 閱讀目錄 1、簡介 2、原因解析 3、XSS攻擊分類   3.1、反射型xss攻擊   3.2、存貯型xss攻擊   3.3、DOMBasedXSS(基於dom的跨站點腳本攻擊) 4、XSS攻擊

Fortify漏洞之Cross-Site Scripting(XSS 腳本攻擊

puts 私人 解決方案 sta 行為 sel getpara image 字母   書接上文,繼續對Fortify漏洞進行總結,本篇主要針對XSS跨站腳步攻擊漏洞進行總結如下: 1、Cross-Site Scripting(XSS 跨站腳本攻擊) 1.1、產生原因: 1.

XSS 與 CSRF 兩種攻擊

鏈接 href 本機 但是 不可見 不知道 pre col CI 在前幾年,大家一般用拼接字符串的方式來構造動態 SQL 語句創建應用,於是 SQL 註入成了很流行的攻擊方式, 但是現在參數化查詢 已經成了普遍用法,我們已經離 SQL 註入很遠了。但是歷史同樣