知识大全 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] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
知识大全 浅析php过滤html字符串,防止SQL注入的方法
浅析php过滤html字符串,防止SQL注入的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本
SQL注入步骤和常用函数以及中文处理方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第一节S
在PHP中全面阻止SQL注入式攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本系列文章中
PHP防止JS注入正则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 例子代码如下
防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义 对于简单的情况比如包含单引号分号;<>等字符可通过rewrite直接重订向到页面来避免 用rewrite有个前提需要
PHP网络开发详解:SQL注入漏洞[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PHP网络开发详解:SQL注入漏洞[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PHP网络编程:小心SQL注入漏洞 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
本篇文章是对计算php页面运行时间的函数进行了详细的分析介绍需要的朋友参考下 一个计算php页面运行时间的函数复制代码代码如下:cha138/Article/program/P