導航:首頁 > 編程語言 > php防注入過濾函數

php防注入過濾函數

發布時間:2022-07-23 22:16:03

❶ 誰能給我這一個php防sql注入的函數啊,功能越強大越好

functioninject_check($Sql_Str){//自動過濾Sql的注入語句。
$check=preg_match('/select|insert|update|delete|'|\*|*|../|./|union|into|load_file|outfile/i',$Sql_Str);
if($check){
echo'<scriptlanguage="JavaScript">alert("系統警告: 請不要嘗試在參數中包含非法字元嘗試注入!");</script>';
exit();
}else{
return$Sql_Str;
}
}

我這個是自己寫的,通過正則判斷是否含有危險關鍵字,希望採納。

❷ php如何防止sql注入

PHP防止sql注入是一個比較低級的問題了,這個問題其實在我大一上學期做第一個個人博客的時候就已經關注過了,不過簡單的說一下關於PHP防注入的方式吧。


對於現在的防注入技術其實已經成熟了,對於一個站點該關心的不是防注入了,而是大規模高並發如何處理的問題,或者關於各種其他漏洞,比如現在世界上仍然有百分之80使用redis的站點存在redis漏洞,通過redis漏洞可以直接拿到機器的訪問許可權,一般來說都是直接給你種一個挖礦機器人來。

❸ php防止sql注入漏洞有哪些函數

一個是沒有對輸入的數據進行過濾(過濾輸入),還有一個是沒有對發送到資料庫的數據進行轉義(轉義輸出)。這兩個重要的步驟缺一不可,需要同時加以特別關注以減少程序錯誤。
對於攻擊者來說,進行SQL注入攻擊需要思考和試驗,對資料庫方案進行有根有據的推理非常有必要(當然假設攻擊者看不到你的源程序和資料庫方案),考慮以下簡單的登錄表單:
<form action="/login.php" method="POST">
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<p><input type="submit" value="Log In" /></p>
</form>
作為一個攻擊者,會從推測驗證用戶名和密碼的查詢語句開始。通過查看源文件,就能開始猜測站長的習慣。
比如命名習慣。通常會假設表單中的欄位名為與數據表中的欄位名相同。當然,確保它們不同未必是一個可靠的安全措施。
第一次猜測,一般會使用下面例子中的查詢:
<?php
$password_hash = md5($_POST['password']);

$sql = "SELECT count(*)
FROM users
WHERE username = '{$_POST['username']}'
AND password = '$password_hash'";
?>
當然,攻擊者未必在第一次就能猜中,常常還需要做一些試驗。有一個比較好的試驗方式是把單引號作為用戶名錄入,原因是這樣可能會暴露一些重要信息。有很多開發人員在Mysql語句執行出錯時會調用函數mysql_error()來報告錯誤。見下面的例子:
<?php
mysql_query($sql) or exit(mysql_error());
?>
關於SQL注入,不得不說的是現在大多虛擬主機都會把magic_quotes_gpc選項打開,在這種情況下所有的客戶端GET和POST的數據都會自動進行addslashes處理,所以此時對字元串值的SQL注入是不可行的,但要防止對數字值的SQL注入,如用intval()等函數進行處理。

❹ php防sql注入漏洞可以用什麼函數

1.函數的構建
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 進行過濾
}
function verify_id($id=null) {
if (!$id) { exit('沒有提交參數!'); } // 是否為空判斷
elseif (inject_check($id)) { exit('提交的參數非法!'); } // 注射判斷
elseif (!is_numeric($id)) { exit('提交的參數非法!'); } // 數字判斷
$id = intval($id); // 整型化
return $id;
}?
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判斷magic_quotes_gpc是否打開
$str = addslashes($str); // 進行過濾
}
$str = str_replace("_", "\_", $str); // 把 '_'過濾掉
$str = str_replace("%", "\%", $str); // 把 '%'過濾掉
return $str;
}
function post_check($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標記轉換
return $post;
}
2.函數的使用實例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的數據非法,請檢查後重新提交!');
}
else
{
$id = $_GET['id'];
//處理數據………………
}
?>

❺ PHP foreach 防注入請教

php foreach只是個循環函數,沒有注入一說。
注入一般指的是資料庫注入。意思就是使用一些非法字元,改變數據的正常sql語句功能。
當然也有一些注入html標簽的方法破壞網站結構等等。
網站上用戶傳入的數據,經過驗證,並不關foreach的事,使用字元串的相關操作,將非法的html標簽等刪除掉等等。

❻ [php]防sql語句注入函數,怎麼使用

我認為這個函數inject_check 的主要功能是過濾,而不是起判斷的作用。
主要用於你接受參數時候,你用該函數過濾一下,這樣安全些。

❼ 求php防止被sql 注入攻擊的過濾用戶輸入內容的函數

functionclean($v){
//判斷magic_quotes_gpc是否為打開
if(!get_magic_quotes_gpc()){
//進行magic_quotes_gpc沒有打開的情況對提交數據的過濾
$v=addslashes($v);
}
//把'_'過濾掉
$v=str_replace("_","\_",$v);
//把'%'過濾掉
$v=str_replace("%","\%",$v);
//把'*'過濾掉
$v=str_replace("*","*",$v);
//回車轉換
$v=nl2br($v);
//html標記轉換
$v=htmlspecialchars($v);
return$v;
}

如果需要,還可以屏蔽一下危險字元,例如insert, update, delete等

//將update去掉
$v=str_replace("update","",$v);

最後,在拼裝sql語句時,用戶輸入的東西,全括在單引號內

❽ php提供哪個函數來避免命令注入

命令注入攻擊
PHP中可以使用下列5個函數來執行外部的應用程序或函數
system、exec、passthru、shell_exec、「(與shell_exec功能相同)
函數原型
stringsystem(stringcommand,int&return_var)
command要執行的命令
return_var存放執行命令的執行後的狀態值
stringexec(stringcommand,array&output,int&return_var)
command要執行的命令
output獲得執行命令輸出的每一行字元串

❾ php如何防止sql注入

額,這是我老師給的答案

答:過濾一些常見的資料庫操作關鍵字,
select ,insert,update,delete,and,*等或通過系統函數addslashes對內容進行過濾
php配置文件中register_globals=off;設置為關閉狀態.(作用將注冊全局變數關閉);如接收POST表單的值使用$_POST['user'],假設設置為ON的話$user才接收值
sql語句書寫的時候盡量不要省略小引號(tab上面那個)和單引號
提高資料庫命名技巧,對於一些重要的欄位根據程序的特點命名,使之不易被猜中
對於常的方法加以封裝,避免直接暴漏SQL語句
開啟PHP安全模式safe_mode=on
打開magic_quotes_gpc來防止SQL注入,默認為關閉,開啟後自動把用戶提交sql查詢語句進行轉換把"'"轉換成"\'"
控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日誌
使用MYSQLI或PDO預處理

❿ php怎樣過濾非法字元防止sql注入

htmlspecialchars($_POST['欄位']),用這個函數就可以將一些特殊字元進行過濾轉義。你可以去看看這個函數的說明。

閱讀全文

與php防注入過濾函數相關的資料

熱點內容
歐洲cf玩什麼伺服器 瀏覽:527
如何連接另一台電腦上的共享文件夾 瀏覽:679
如何讓桌面文件夾搬家到e盤 瀏覽:71
java自動格式化 瀏覽:617
ipad怎麼查看文件夾大小 瀏覽:581
手工粘土解壓球 瀏覽:550
在線視頻教育源碼 瀏覽:39
快四十學什麼編程 瀏覽:754
gnumakelinux 瀏覽:537
視易峰雲伺服器怎麼改系統 瀏覽:535
javamap取值 瀏覽:768
mac和win磁碟加密軟體 瀏覽:474
蘋果為什麼會連接不到伺服器 瀏覽:726
pdf格式文件如何保存 瀏覽:303
小霸王伺服器tx什麼意思 瀏覽:75
解釋dns命令 瀏覽:584
dmx512怎麼編程 瀏覽:744
北京雲主機17t雲伺服器 瀏覽:232
php伺服器url地址 瀏覽:440
哪裡看書免費app 瀏覽:437