【发布时间】:2016-05-11 19:19:01
【问题描述】:
我在链接中使用此 SQL 查询从数据库中检索数据
<div class="nav-laptop"><a href="proizvodi.php?upit=SELECT Slika, Naziv, Opis, Cijena FROM Proizvodi WHERE Kategorija='Laptop' ORDER BY Proizvodac Asc;">Laptop</a>
并使用显示它
$sql = $_REQUEST['upit'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<div class='proizvodi'>";
// output data of each row
$result->data_seek(0);
while($row = $result->fetch_assoc()) {
echo "<div class='row'>";
foreach($row as $key => $value){
echo "<div class='" . $key . "'>" . $value . "</div>";
}
echo "</div>";
echo "<hr />";
}
echo "</div>";
}
else {
echo "<div class='search-query-none'><img src='index/no result.png' width='754' height='198' /></div>";
}
我意识到这是非常脆弱的,我应该使用 POST 方法来隐藏 URL 中的参数。我尝试阅读在线论坛,但没有发现任何可以帮助我将其转换为 POST 检索数据的方式。 那么,如何使用 POST 方法来获得与现在使用 GET 相同的结果?
【问题讨论】:
-
您必须使用表单(最简单的方式)通过 POST 方法发送参数。仅发送可能更改的参数 - 例如您的类别。然后使用准备好的语句以免受到攻击。
-
您应该在 PHP 中构建查询。从 URL 发送查询非常不安全。如果有人发现这个并加载了
proizvodi.php?upit=delete from Proizvodi,你的整个数据表就消失了;或者更糟糕的是,将所有文本更改为链接。