【发布时间】:2019-07-10 18:53:01
【问题描述】:
我怀疑我的“即将成为网站”的代码很弱或很容易被破解。
我阅读了有关 SQL 注入和其他安全问题的信息,我知道 URL 不应该是这样的:“index.php?catid=id” 它必须被隐藏、重定向或路由。
这是我试图避免的,但是,我已经尝试过 session_start();但结果一团糟。
我也可能错了,使用锚点将用户从一个页面发送到另一个页面时可能根本没有危险点击这里
请检查下面的代码。
header.php
<div class="header">
<div class="logo">
<a href="index.php"><img src="images/logo.jpg" alt="logo" /></a>
</div><!--logo ends-->
<div class="navigation">
<?php
$cat_sql = "SELECT * FROM category";
$cat_query = $conn->query($cat_sql);
while ($cat_results = $cat_query->fetch_array()){
$category_page = "category.php?categoryID=" .$cat_results['categoryID'];
//session_start();
//echo session_id();
echo "<a href='$category_page'>". $cat_results['name'] ." </a>";
}
CloseCon($conn)
?>
<a href="admin.php">Admin</a>
</div><!--navigation ends-->
</div><!-- Header ends here-->
dbconnect.php
$servername = "localhost";
$username = "root";
$password = "123456789";
$database = "accessories";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";a
function CloseCon($conn)
{$conn -> close();}
【问题讨论】:
-
等等...为什么
session_start()和session_id()在while内?? -
仅用于测试目的,只是将它们注释掉..
-
您是否担心有人可能会简单地“知道”一个 ID 为 x 的类别名称为 y?当您转到 category.php 页面时究竟会发生什么?
-
不,我不担心,我担心的是如果 URL 中显示了一个ID,它可能会在网站中打开一个安全漏洞?类别页面将显示这些项目、价格、图片等。没有什么真正重要的..
-
如果除了显示信息之外什么都没发生,那么你就很安全了。但是,如果您根据发送的内容来操作数据/文件等,那么您将敞开心扉。
标签: php mysqli sql-injection