没有为 SQL 注射故意消毒

Not sanitizing purposely for SQL Injection

正如标题所说,我正在开发一个小项目并且遇到了一些问题。 尝试 SQL 直接在搜索框上注入,但似乎不起作用。 我相信我的代码并没有那么干净。如有任何意见,我们将不胜感激。

这是我的表单页面的一部分;

          <form method="post" action="tablepaging1.php">
            <div class="form-group">
              <input type="text" class="form-control bg-light border-0 small" name="word" placeholder="Search for..." aria-label="word" aria-describedby="basic-addon2">
              <input type="submit" value="Search" name="submit" class="login-button"/>
            </div>
          </form>

这是处理部分(tablepaging1.php)

<?php
require('config.php');
$word = $_POST['word'];
   
    
    
$min_length = 3;

    
    if(strlen($word) >= $min_length){ // if query length is more or equal minimum length then
        
        $raw_results = "SELECT * FROM services
            WHERE `co_name` LIKE '%".$word."%' OR `co_phone` LIKE '%".$word."%'";
                $getSearch_res = mysqli_query($link, $raw_results) or die('v3n0ms1x6SiX');
        
        if(mysqli_num_rows($getSearch_res) > 0){ // if one or more rows are returned do following
            
            while($results = mysqli_fetch_array($getSearch_res)){

                echo "<p><h3>".$results['co_name']."</h3>".$results['co_phone']."</p>";
            }
            
        }
        else{
            echo "No results";
        }
        
    }
    else{
        echo "Minimum length is ".$min_length;
    }    
        ?>

所以你想尝试 SQL 注射?对于您的情况,请尝试以下输入 $word:

abc' or 1=1 or 'ddd

因此您的结果字符串将是

SELECT * FROM services WHERE co_name LIKE '%abc' or 1=1 or 'ddd%' OR co_phone LIKE '%abc' or 1=1 or 'ddd%'

您将从服务 table 中检索所有数据。