我有一个PHP代码,其中我在女性产品或任何其他产品的任何其他链接clikcing。点击哪个我去下一页,并在querystring中传递产品名称。 然后在下一页即时通讯使用我的sql查询,这将给我在第一页上点击的产品列表。在我的项目中有很多像这样的查询。这个查询是很容易谷歌机器人黑客与SQL injection.Following是代码更新查询来打击谷歌机器人黑客入侵
<html>
<head>
</head>
<body>
<ul id="list">
<li><h3><a href="search.php?name=women-top">tops</a></h3></li>
<li><h3><a href="#">suits</a></h3></li>
<li><h3><a href="#">jeans</a></h3></li>
<li><h3><a href="search.php?name=women">more</a></h3></li>
</ul>
</body>
</html
的search.php
<?php
$mysqli = new mysqli('localhost', 'root', '', 'shop');
if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
}
?>
<html>
<head>
</head>
<body>
<?php
session_start();
$lcSearchVal=$_GET['name'];
//echo "hi";
$lcSearcharr=explode("-",$lcSearchVal);
$result=count($lcSearchVal);
//echo $result;
$parts = array();
$parts1=array();
foreach($lcSearcharr as $lcSearchWord){
$parts[] = '`PNAME` LIKE "%'.mysql_real_escape_string($lcSearchWord).'%"';
$parts1[] = '`TAGS` LIKE "%'.$lcSearchWord.'%"';
//$parts[] = '`CATEGORY` LIKE "%'.$lcSearchWord.'%"';
}
$stmt = $mysqli->prepare('SELECT * FROM xml where'.'PNAME LIKE ?');
var_dump($stmt);
$parts='%women%';
$stmt->bind_param('s',$parts);
$list=array();
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
$list[]=$row;
}
}
$stmt->close();
$mysqli->close();
foreach($list as $array)
{
?>
<div class="image">
<img src="<?php echo $array['IMAGEURL']?>" width="200px" height="200px"/></a>
<?php
}
?>
</div>
</body>
</html>
以上使用查询IM是很容易谷歌机器人hacking.Please指导我,我应该在此查询更改,使谷歌机器人将无法破解我的应用程序与MySQL注入..在我的应用程序中有一些其他类似的查询这一个。请大家帮助我。
首先,你应该停止使用'mysql_'变量的数字。它已被弃用,这意味着没有更多的支持,并在最新版本的PHP中不可用。其次,你应该使用'mysqli_'或'PDO'和**准备好的语句**。他们帮助反对SQL注入。“ –
k.in的地方的MySQL,我寒use使用mysqli,ryt?和我寒also也使用这个准备的语句.... – user3545382
是的,看看这个不错的[教程](http://mattbango.com/notebook/code/prepared-statements-in-php-and-mysqli /)for'mysqli_ *'with prepared statements。 –