首頁  >  文章  >  後端開發  >  最全防止sql注入方法

最全防止sql注入方法

WBOY
WBOY原創
2016-07-29 08:56:111451瀏覽
(1)mysql_real_escape_string -- 轉義SQL 語句中使用的字串中的特殊字符,並考慮到連接的當前字符集 

使用方法如下:

? 2

3count

$sql

= "select

(*)

asctr from users where username='".mysql_real_escape_string($username)."'and

mysql_real_escape_string($pw)."'limit 1";

使用 

mysql_real_escape_string()

 作為使用者輸入的包裝器,就可以避免使用者輸入中的任何惡意 SQL 注入。

(2) 開啟magic_quotes_gpc來防止SQL注入

php.ini中有一個設定:magic_quotes_gpc = Off

  這個預設是關閉的,如果它開啟後將自動把使用者提交對sql

的例如把' 轉為'等,對於防止sql注射有重大作用。

     如果magic_quotes_gpc=Off,則使用addslashes()函數

(3)自訂函數

 

?

1

2

3

4

11

12

13

14

15

16

17

18

19

20

21

27

28

29

30

31

32

33

34

35

36

37

38unc

38399

inject_check(

$sql_str

) {

    

return

eregi

(

'select|insert|and|or|update|delete|'//file|outp|'/file| '

,

$sql_str

);

}

functionverify_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) {    {         $str

=

addslashes

(

addslashes(); // 進行過濾

    

}     $str=

str_replace("_",

"_", $str);     $str= str_replace

("%",

"%", $str);          return$str;

} functionpost_check($post) {     if(!get_magic_quotes_gpc()) {         

$post=

addslashes }     $post

= str_replace

("_", "_",

$post);     

$post= str_replace("%", "%",

$post);

    $post= nl2br($post);     $post= htmlspecialchars($post

);

      

    return$post;

}

以上就介紹了最全防止sql注入方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn