请验证我的sql查询是否足够安全,不受谷歌sql攻击
<a href="secondpage.php?name=men">men</a>
以上链接将转到下一页并传递名称变量,该变量具有men作为值... 在第二页中,我按如下方式执行我的SQL查询。
$lcSearchVal=$_GET['name'];
$lcSearcharr=explode("-",$lcSearchVal);
foreach( $lcSearcharr as $lcSearchWord ){
$lcSearchWord = mysqli_real_escape_string($mysqli, $lcSearchWord);
$lcSearchWord = preg_replace('/%/', '\%', $lcSearchWord);
$parts[] = '`Description` LIKE "%'.$lcSearchWord.'%"';
}
$countsql2='SELECT * FROM xml WHERE ('.implode ('AND',$parts).')';
//print($countsql2);
$countsql3 = mysqli_query($mysqli, $countsql2) or die("Cannot Get Pname Info: (".mysql_error().")");
$androws = mysqli_num_rows($countsql3);
while($row = mysqli_fetch_array($countsql3)) {
$countArray1[] = $row;
}
请检查我的sql查询是否可以安全地使用谷歌sql注入。
答案 0 :(得分:0)
Google SQLi攻击?我想你错过了,如果谷歌卷曲你的网站,并添加一些损害你的网站的“恶意”字符这不是因为他们想要这是因为你没有过滤你的用户查询。
在您的代码中,您可以使用mysqli_real_escape_string
来过滤查询。
如果想使用mysqli来逃避你的字符串你可以做类似的事情:
$lcSearchVal=$_GET['name'];
$query = $dbConnection->prepare('SELECT * FROM xml WHERE Description LIKE ?');
$query->bind_param('s', $lcSearchVal);
$query->execute();
$result = $query->get_result();
// then run while fetch_assoc() or similar loop to fetch the data.
基本上永远不会信任用户,无论谷歌还是只是一个简单的用户总是验证数据,因为它可以被操纵。
在这里阅读更多内容:
答案 1 :(得分:0)
首先,搜索引擎的机器人可能会通过自己的SQL注入来损害您的网站,这是不太可能的。搜索引擎机器人只能关注其他网页上的链接。
因此,如果实际上搜索引擎机器人触发了有害的SQL注入,那么就必须有另一个网页,其中包含指向包含SQL注入有效负载的网站的链接,例如: G:
<a href="http://example.com/secondpage.php?name=' evil SQL code …">
但是,您的代码看起来很安全。