一些防范sql注入式攻击的比较有见地的代码(PHP)
来源:互联网 发布:怎样删除软件注册表 编辑:程序博客网 时间:2024/06/05 06:57
$_POST = sql_injection($_POST);$_GET = sql_injection($_GET);function sql_injection($content){if (!get_magic_quotes_gpc()) {if (is_array($content)) {foreach ($content as $key=>$value) {$content[$key] = addslashes($value);}} else {addslashes($content);}}return $content;}做系统的话,可以用下面的代码,也是copy来的:/* 函数名称:inject_check() 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全 参 数:$sql_str: 提交的变量 返 回 值:返回检测结果,ture or false */ function inject_check($sql_str) { return eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str); // 进行过滤 } /* 函数名称:verify_id() 函数作用:校验提交的ID类值是否合法 参 数:$id: 提交的ID值 返 回 值:返回处理后的ID */ function verify_id($id=null) { if (!$id) { exit('没有提交参数!'); } // 是否为空判断 elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断 elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断 $id = intval($id); // 整型化 return $id; } /* 函数名称:str_check() 函数作用:对提交的字符串进行过滤 参 数:$var: 要处理的字符串 返 回 值:返回过滤后的字符串 */ function str_check( $str ) { if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开 $str = addslashes($str); // 进行过滤 } $str = str_replace("_", "\_", $str); // 把 '_'过滤掉 $str = str_replace("%", "\%", $str); // 把 '%'过滤掉 return $str; } /* 函数名称:post_check() 函数作用:对提交的编辑内容进行处理 参 数:$post: 要提交的内容 返 回 值:$post: 返回过滤后的内容 */ 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 = nl2br($post); // 回车转换 $post = htmlspecialchars($post); // html标记转换 return $post; } ?>
还有一个就是:
//预防数据库攻击的正确做法:<?phpfunction check_input($value){// 去除斜杠if (get_magic_quotes_gpc()) { $value = stripslashes($value); }// 如果不是数字则加引号if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; }return $value;}$con = mysql_connect("localhost", "hello", "321");if (!$con) { die('Could not connect: ' . mysql_error()); }// 进行安全的 SQL$user = check_input($_POST['user']);$pwd = check_input($_POST['pwd']);$sql = "SELECT * FROM users WHEREuser=$user AND password=$pwd";mysql_query($sql);mysql_close($con);?>
需要注意的是,mysql_real_escape_string()函数和addslashes()的功能类似。mysql_real_escape_string()效果更好。但因为mysql_real_escape_string()函数是必须在mysql连接之后才可以使用的.所以基于这个问题,我觉得还是使用addslashes()这个函数比较不错。
- 一些防范sql注入式攻击的比较有见地的代码(PHP)
- 防范SQL注入攻击的代码
- 防范SQL注入攻击的代码
- js+asp版的防范SQL注入式攻击代码
- js版的防范SQL注入式攻击代码
- asp版的防范SQL注入式攻击代码
- SQL 注入式攻击的终极防范
- SQL 注入式攻击的终极防范
- SQL 注入式攻击的终极防范
- SQL注入攻击的防范
- SQL注入攻击的种类和防范手段有哪些?
- PHP中SQL注入与跨站攻击的防范
- 防范SQL注入攻击的新办法
- 防范SQL注入攻击的新办法
- 防范SQL注入攻击的新办法
- 防范SQL注入攻击的新办法
- 防范SQL注入攻击的新办法
- SQL注入攻击的原理与防范
- 代码调用存储过程超时,SQL Server Management Studio里运行很快
- 安装virtualbox虚拟机的增强功能
- pthread_cond_broadcast
- VM下的Linux虚拟机与宿主机之间的挂载解决方案
- 深入理解Hadoop集群和网络
- 一些防范sql注入式攻击的比较有见地的代码(PHP)
- 如何给MySql创建连接用户并授权
- 在linux shell中使用for遍历产生的递增数字序列的N种方法
- centos安装redis及php-redis扩展
- 在 Excel 启动时运行宏
- Android4.0 TouchScreen
- spring源码分析,view的处理过程
- Struts2自定义过滤器 + 百度富文本控件UEditor + Smb上传图片到独立服务器
- POJ 3261 Milk Patterns(可重叠的K次最长重复子串)