Heim  >  Artikel  >  Backend-Entwicklung  >  最全防止sql注入方法

最全防止sql注入方法

WBOY
WBOYOriginal
2016-07-29 08:56:111481Durchsuche
(1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 

使用方法如下:

?

1

2

3

$sql= "select count(*) asctr from users where username

='".mysql_real_escape_string($username)."'and

password='". 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

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

functioninject_check($sql_str) {

    returneregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);

}

functionverify_id($id=null) {

    if(!$id) {

        exit('没有提交参数!');

    } elseif(inject_check($id)) {

        exit('提交的参数非法!');

    } elseif(!is_numeric($id)) {

        exit('提交的参数非法!');

    }

    $id= intval($id);

      

    return$id;

}

functionstr_check( $str) {

    if(!get_magic_quotes_gpc()) {

        $str= addslashes($str); // 进行过滤

    }

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

    $str= str_replace("%", "\%", $str);

      

   return$str;

}

functionpost_check($post) {

    if(!get_magic_quotes_gpc()) {

        $post= addslashes($post);

    }

    $post= str_replace("_", "\_", $post);

    $post= str_replace("%", "\%", $post);

    $post= nl2br($post);

    $post= htmlspecialchars($post);

      

    return$post;

}

以上就介绍了最全防止sql注入方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn