web项目防御mysql注入_WEB安全 php+mysql5注入防御

,0x20,VERSION(),0x20,USER(),0x20,@@VERSION_COMPILE_OS),2,3

用户ID:sqlin 5.5.53 root@localhost Win32

http://127.0.0.1/1.php?x=1 UNION SELECT CONCAT(TABLE_NAME,0x20,TABLE_COLLATION),2,3 from information_schema.tables where table_schema=0x73716C696E

http://127.0.0.1/1.php?x=1 UNION SELECT CONCAT(column_name),2,3 from information_schema.columns where table_name=0x6E657773 //

http://127.0.0.1/1.php?x=1 UNION SELECT id,text,title FROM sqlin.news

http://127.0.0.1/1.php?x=1 UNION SELECT `key`,2,3 FROM sqlin.data

key在数据库中是关键字,需要用反引号引起来

用户ID:www.xiaodi8.com

二、注入产生的原因及修复建议

1. 注入产生的原因:未对参数接收的值进行过滤

2. 修复建议:

2.1 判断传入的参数类型(数字,过滤非数字):

//定义接收参数

//1.定义数据库信息

//2.连接数据库,选择数据库,定义sql语句,执行语句

//3.返回结果并处理显示,关闭数据库

$id = $_GET[‘x‘];//接收参数名为x的值并赋值给变量id

if(is_numeric($id)){ //如果接收过来的id变量的值是数字

$conn = mysql_connect("127.0.0.1","root","root");//连接数据库

mysql_select_db("sqlin",$conn);//选择数据库

$sql = "select * from news where id=$id";//定义sql语句

$result = mysql_query($sql);//执行sql语句

while($row = mysql_fetch_array($result)){//获取,遍历查询结果并显示

echo "用户ID:".$row[‘id‘]."
";

echo "文章标题:".$row[‘title‘]."
";

echo "文章内容:".$row[‘text‘]."
";

echo "


";

}

mysql_close($conn);//关闭数据库连接

echo "当前执行语句:".$sql."


";

}else{

echo "非法字符: ".$id;

}

?>

2.2 指定关键字过滤(过滤select等关键字,考虑大小写是否可绕过):

//php语言开端

//php+mysql注入页面编程实现

/*

1.接受参数

2.数据库连接,选择,定义组合,执行

3.返回结果并处理显示

*/

function check_sql($id){ //过滤select关键字

$id = str_replace("select","",$id);

return $id;

}

$id = $_GET[‘x‘];//接受参数名x的值并赋值给变量id

//$id = str_replace("select","",$id);

$id = check_sql($id);

//echo $id;

$conn = mysql_connect("127.0.0.1","root","root");//连接数据库

mysql_select_db("sqlin",$conn);//选择数据库

$sql = "select * from news where id=$id";//定义sql语句

$result = mysql_query($sql);//执行sql语句

while($row = mysql_fetch_array($result)){ //遍历结果显示

echo "用户ID:".$row[‘id‘]."
";

echo "文章内容:".$row[‘text‘]."
";

echo "文章标题:".$row[‘title‘]."
";

echo "


";

}

mysql_close($conn);//关闭数据库连接

echo "当前执行语句:".$sql."


";

//php语言结尾

?>

end.

WEB安全 php+mysql5注入防御

标签:默认   replace   general   mysql注入   版本   echo   check   遍历   进制

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/i-honey/p/7903503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值