我想
问一下如何在下面的代码中从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"> </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"> </div>
</div>
</section>
<?php
require('include/footer.php');
?>
由于您在查询中没有接受任何输入,因此不存在SQL注入的问题。但是,如果您在查询中使用任何数据(变量),则必须注意sql注入。
可以使用预准备语句来防止 sql 注入。
在这里,您正在使用类似于SELECT * FROM newsevent order by date DESC
的查询。在这种情况下,没有传递给查询的变量。因此,查询中永远不会有任何修改。但是,如果您使用这样的查询
SELECT * FROM newsevent order by date DESC where some_column = '$variable'
这里假设$variable
是一个可以替换值的数据。所以你必须注意这里的SQL注入。您也可以查看以下答案,这是在sql注入的情况下评分最高的答案
- 如何防止 PHP 中的 SQL 注入?
SQL
注入在这种情况下不适用,因为您不会在 SQL 语句中插入用户数据。
但是,如果您的表数据是用户输入的,则您的代码容易受到 PHP 代码注入的影响。