Heim > Backend-Entwicklung > PHP-Tutorial > php防范sql注入的一些代码收集

php防范sql注入的一些代码收集

WBOY
Freigeben: 2016-07-25 08:58:22
Original
881 Leute haben es durchsucht
本文介绍下,在php中,实现sql注入的一些代码,供大家学习参考。

专题推荐:php防止sql注入

防范sql注入的代码:

<?php
/**
* 防范sql注入
* edit bbs.it-home.org
*/
$_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;  
}  
?>
Nach dem Login kopieren

下面这个适合在php oop面向对象的程序中使用:

<?php 
/*  
函数名称: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;   
}   
?>
Nach dem Login kopieren

这里,再提供一个代码。 //预防数据库攻击的正确做法:

<?php  
function 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 WHERE  
user=$user AND password=$pwd";  
  
mysql_query($sql);  
  
mysql_close($con);  
?>
Nach dem Login kopieren

注意: mysql_real_escape_string()函数和addslashes()的功能类似。 mysql_real_escape_string()效果更好。 由于 mysql_real_escape_string()函数是必须在mysql连接之后才可以使用的,基于此,建议使用addslashes()函数进行处理。



Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage