知识大全 php防止sql注入的函数介绍

Posted 函数

篇首语:要让事情改变,先改变自己;要让事情变得更好,先让自己变得更强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 php防止sql注入的函数介绍相关的知识,希望对你有一定的参考价值。

  具体用法

  addslashes防止SQL注入

  虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入 还是建议大家加强中文防止SQL注入的检查 addslashes的问题在 于黑客 可以用 xbf 来代替单引号 而addslashes只是将 xbf 修改为 xbf c 成为一个有效的多字节字符 其中的 xbf c仍会 被看作是单引号 所以addslashes无法成功拦截

  当然addslashes也不是毫无用处 它是用于单字节字符串的处理 多字节字符还是用mysql_real_escape_string吧

  另外对于php手册中get_magic_quotes_gpc的

  举例

代码如下  

   <?php 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 = nl br($post); // 回车转换 $post= specialchars($post); // 标记转换 return $post; ?>

  或

  <?php function inject_check($sql_str) return eregi( select|insert|update|delete| | function verify_id($id=null) if (!$id) exit( 没有提交参数! ); // 是否为空判断 elseif (inject_check($id)) exit( 提交的参数非法! ); // 注射判断 elseif (!is_numeric($id)) exit( 提交的参数非法! ); // 数字判断 $id = intval($id); // 整型化 return $id; ?>

  string mysql_real_escape_string ( string $unescaped_string [ resource $link_identifier ] )

  本函数将 unescaped_string 中的特殊字符转义 并计及连接的当前字符集 因此可以安全用于 mysql_query()

  Note: mysql_real_escape_string() 并不转义 % 和 _

  mysql_real_escape_string

  Example# mysql_real_escape_string() 例子

代码如下  

  <?php $item = "Zak s and Derick s Laptop" ; $escaped_item = mysql_real_escape_string ( $item ); printf ( "Escaped string: %sn" $escaped_item ); ?>

  以上例子将产生如下输出

  Escaped string: Zak s and Derick s Laptop

  mysql_escape_string

  本函数将 unescaped_string 转义 使之可以安全用于 mysql_query()

  注: mysql_escape_string() 并不转义 % 和 _

  本函数和 mysql_real_escape_string() 完全一样 除了 mysql_real_escape_string() 接受的是一个连接句柄并根据当前字符集转移字符串之外 mysql_escape_string() 并不接受连接参数 也不管当前字符集设定

  例子 mysql_escape_string() 例子

代码如下  

  <?php $item = "Zak s Laptop"; $escaped_item = mysql_escape_string($item); printf ("Escaped string: %sn" $escaped_item); ?> 输出 Escaped string: Zak s Laptop

  mysql_real_escape_string和mysql_escape_string这 个函数的区别

  mysql_real_escape_string 必须在(PHP >= PHP )的情况下才能使用 否则只能用 mysql_escape_string 两者的区别是 mysql_real_escape_string 考虑到连接的当前字符集 而mysql_escape_string 不考虑

  我们可以利用判断来综合处理

代码如下   function cleanuserinput($dirty) if (get_magic_quotes_gpc()) $clean = mysql_real_escape_string(stripslashes($dirty)); else $clean = mysql_real_escape_string($dirty); return $clean;

  总结一下

  * addslashes() 是强行加;

  * mysql_real_escape_string() 会判断字符集 但是对PHP版本有要求;

cha138/Article/program/PHP/201311/21094

相关参考

知识大全 利用instr()函数防止SQL注入攻击[1]

利用instr()函数防止SQL注入攻击[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 浅析php过滤html字符串,防止SQL注入的方法

浅析php过滤html字符串,防止SQL注入的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本

知识大全 SQL注入步骤和常用函数以及中文处理方法

SQL注入步骤和常用函数以及中文处理方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一节S

知识大全 在PHP中全面阻止SQL注入式攻击

在PHP中全面阻止SQL注入式攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在本系列文章中

知识大全 PHP防止JS注入正则

PHP防止JS注入正则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  例子代码如下  

知识大全 nginx防止sql注入

  防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义  对于简单的情况比如包含单引号分号;<>等字符可通过rewrite直接重订向到页面来避免  用rewrite有个前提需要

知识大全 SQL注入漏洞[2]

PHP网络开发详解:SQL注入漏洞[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 SQL注入漏洞[1]

PHP网络开发详解:SQL注入漏洞[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 小心SQL注入漏洞

PHP网络编程:小心SQL注入漏洞  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 计算php页面运行时间的函数介绍

本篇文章是对计算php页面运行时间的函数进行了详细的分析介绍需要的朋友参考下   一个计算php页面运行时间的函数复制代码代码如下:cha138/Article/program/P