关于我对SQL注入理解

关于我对SQL注入的理解

首先,为什么会产生SQL注入呢?其实就是将参数带入数据库查询时我们没有对参数进行过滤。
举个简单例子,如下代码,在数据库进行查询时,没有对传入的参数id进行过滤,导致攻击者能够在地址栏使用sql语句。如下图

<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
	die('Could not connect: ' . mysql_error());
}
mysql_select_db("test",$con);
$id = $_GET['id'];
$querry = "select * from admin where id = " . $id;
$sql = mysql_query($querry,$con);

while($result = mysql_fetch_array($sql))
{
	echo "<p>" . $result[0] . "</p>";
	echo "<p>" . $result[1] . "</p>";
	echo "<p>" . $result[2] . "</p>";
}
mysql_close($con);
echo $querry;
?>

关于我对SQL注入理解
原本执行的只是简单的select * from admin where id = 1,但是攻击者将传入的参数构造成了1 union select 1,database(),3,并且将之带入数据库查询,只有攻击者找到自己想要的字段比如说用户密码,则能够进一步攻击。

总结
所以说其实sql注入就是带入数据库查询的参数没有过滤,通常过滤一些非法字符,比如:单引号、数据库所用的查询语句、更新语句等等。