我有一個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。 –