sql查询是否受到googlebots攻击的保护(谷歌sql注入)

时间:2014-05-21 12:21:07

标签: php mysql sql security sql-injection

请验证我的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注入。

2 个答案:

答案 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.

基本上永远不会信任用户,无论谷歌还是只是一个简单的用户总是验证数据,因为它可以被操纵。

在这里阅读更多内容:

http://www.php.net/manual/en/mysqli-stmt.bind-param.php

答案 1 :(得分:0)

首先,搜索引擎的机器人可能会通过自己的SQL注入来损害您的网站,这是不太可能的。搜索引擎机器人只能关注其他网页上的链接。

因此,如果实际上搜索引擎机器人触发了有害的SQL注入,那么就必须有另一个网页,其中包含指向包含SQL注入有效负载的网站的链接,例如: G:

<a href="http://example.com/secondpage.php?name=' evil SQL code …">

但是,您的代码看起来很安全。