-4

我想问一下如何在下面的代码中从 sql 注入中修复。如果我是正确的,我认为代码容易受到 sql 注入的影响。

$result = mysql_query("SELECT * FROM newsevent order by date DESC"); 

这是完整的代码。这个文件来自newsview.php?id=200。任何人都可以从下面的代码中给出建议,并解释为什么下面的代码易受tu sql注入。

<?php 
$page="video";  
require('include/header.php');  
require('include/config.php'); 
session_start(); 

$result = mysql_query("SELECT * FROM newsevent order by date DESC"); 
?> 

<section id="wrappermain"> 
    <div class="wrapper"> 
        <div class="gray-top">&nbsp;</div> 
          <div class="content"> 

        <h2>News and Events</h2> 

            <div id="video"> 
                <?php 
                    while($row = mysql_fetch_assoc($result)) 
                    { 
                        $no+= 1; 
                        $clk = $row['date']; 

                ?> 

                        <a class="h-cat" href = "newsview.php?id=<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a> ( <a> <?php $date1 = $clk;    $date2 = time(); require('include/timestamp.php'); ?> </a>) 


                    <div class="vline">             
                    <div class="v-img"> 
                        <a href = "newsview.php?id=<?php echo $row['id']; ?>"> <img src = "images/newsandevent/<?php echo $row['image']; ?>" style = "height: 150px; width: 250px;" /> </a>    
                    </div> 
                    <div class="v-des">     
                        <?php echo substr($row['de'],0,225); ?><br/><span style="float:right;padding: 10px 0px;"> <a href = "newsview.php?id=<?php echo $row['id']; ?>"> Read more ... </a> </span>       
                     </div> 
                    </div> 
            <?php } ?> 

            </div> 

            <div class="right"> 
                <div class="white-lt"> 
                <div class="white-rt"></div> 
                    <div class="white-m"> 

                         <strong></strong> 

                        <div style="width: 150px;"> 
                        <?php $result = mysql_query("SELECT * FROM newslink order by id DESC"); 
                        while($row = mysql_fetch_assoc($result)) 
                        { 
                        ?> 

                        <?php echo $row['de']; ?> 


                        <?php } ?>  
                      </div>                                   
                   </div> 
                <div class="white-lb"> 
                <div class="white-rb"></div>  
             </div>    
            </div> 
            </div> 


            </div> 
         <div class="gray-bot">&nbsp;</div> 
    </div> 
</section> 
<?php  
require('include/footer.php');  
?> 
4

2 回答 2

1

由于您没有在查询中输入任何输入,因此没有 sql 注入问题。但是如果您在查询中使用任何数据(变量),那么您必须注意 sql 注入。

您可以通过使用准备好的语句来防止 sql 注入。

在这里您正在使用类似的查询SELECT * FROM newsevent order by date DESC。在这种情况下,没有变量传递给查询。因此查询中永远不会有任何修改。但是如果您使用这样的查询

SELECT * FROM newsevent order by date DESC where some_column = '$variable'

这里说$variable的是一个可以替换值的数据。所以你必须注意这里的sql注入。你也可以检查下面的答案,这是在sql注入的情况下评价最高的答案

  1. 如何防止 PHP 中的 SQL 注入?
于 2013-10-30T10:15:26.557 回答
0

SQL 注入不适用于这种情况,因为您没有在 SQL 语句中插入用户数据。

但是,如果您的表格数据是用户输入的,那么您的代码很容易受到 PHP代码注入的影响。

于 2013-10-30T10:34:46.463 回答