防止 PHP的SQL 注入攻擊

2021-06-22 08:12:28 字數 1451 閱讀 6315

如何防止 php sql 注入攻擊?我認為最重要的一點,就是要對資料型別進行檢查和轉義。總結的幾點規則如下:

1. php.ini 中的 display_errors 選項,應該設為 display_errors = off。這樣 php 指令碼出錯之後,不會在 web 頁面輸出錯誤,以免讓攻擊者分析出有作的資訊。

2. 呼叫 mysql_query 等 mysql 函式時,前面應該加上 @,即 @mysql_query(...),這樣 mysql 錯誤不會被輸出。同理以免讓攻擊者分析出有用的資訊。另外,有些程式設計師在做開發時,當 mysql_query出錯時,習慣輸出錯誤以及 sql 語句,例如:

<?php

//全域性配置檔案中:

define("debug_mode", 0); // 1: debug mode; 0: release mode

//呼叫指令碼中:

$t_strsql = "select a from b....";

if (mysql_query($t_strsql)) else

exit;

}?>

3.對提交的 sql 語句,進行轉義和型別檢查,確保傳入的引數為安全引數。

一般用addslashes() 函式:在指定的預定義字元前新增反斜槓。

這些預定義字元是:

還有對於數字型引數用

is_numeric()函式等。

當php 配置檔案 php.ini 中的magic_quotes_gpc選項magic_quotes_gpc = on時,它會將提交的變數中所有的 '(單引號)、"(雙號號)、(反斜線)、空白字元,都會在前面自動加上過濾掉,相當於用了 addslashes() 函式。

如:

對於非數字型引數:

if (!get_magic_quotes_gpc())  else

還有 可過濾字串:

$str="zhang; or 1=1#";

$str=str_replace("#", "",$str);//去掉字串中的『#』

$str=str_replace(";", "",$str);//去掉字串中的『;』

trim 去除乙個字串兩端空格,

rtrim 是去除乙個字串右部空格,

ltrim 是去除乙個字串左部空格

PHP如何防止SQL注入式攻擊

由於程式開發人員對程式中的一些資料型別沒有經過檢查 向 mysql 提交正確的資料型別以及特殊資料的轉義,導致程式容易受sql注入式攻擊。就此,php對此已提供了安全的設定及內建函式來防止此問題的發生。以下就個人在開發應用中寫點.1 magic quotes runtime設定 當它開啟時,php的...

php防止xss攻擊以及sql注入

function safefilter arr value preg replace ra,value 刪除非列印字元,粗暴式過濾xss可疑字串 arr key htmlentities strip tags value 去除 html 和 php 標記並轉換為 html 實體 else else ...

PHP如何防止SQL注入式攻擊

方法1 由於程式開發人員對程式中的一些資料型別沒有經過檢查 向 mysql 提交正確的資料型別以及特殊資料的轉義,導致程式容易受sql注入式攻擊。就此,php對此已提供了安全的設定及內建函式來防止此問題的發生。以下就個人在開發應用中寫點.1 magic quotes runtime 設定 當它開啟時...