【发布时间】:2016-05-29 12:06:42
【问题描述】:
我有问题。我想在我的页面上有一个表格,它显示来自 MySQL 数据库的内容。这工作得很好:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=********', '********', '********');
$sql = "SELECT subject, givenOn, toDate, teacher, what FROM homework";
echo "<table>";
foreach ($pdo->query($sql) as $row){
// echo "Fach:" . $row['subject'] . " - Lehrer:" . $row['teacher'] . " - Was: " . $row['what'] . $
echo "<tr>";
echo "<td>", $row['subject'], "</td>";
echo "<td>", $row['teacher'], "</td>";
echo "<td>", $row['what'], "</td>";
echo "</tr>";
}
echo "</table>";
?>
但我想要在“what”后面的另一列 - 一个包含删除行的链接。我不知道怎么可能说出他必须删除的链接。我的想法是一个 PhP 页面,其参数如下:
delete.php?subject=math&teacher=smith&what=p13
但这很不安全,不是吗?
你有什么想法可以解决这个问题吗?
dunklesToast
【问题讨论】:
-
"But this is very unsecure, isnt it?"- 是什么让你这么想?为了删除记录,some 请求必须发送到服务器。为什么这样的请求不安全?"how I can solve this problem?"- 您已经提议创建一个删除记录的delete.php页面。您尝试这样做了吗?你在哪里卡住了? -
不要在数据库中创建链接,而是为每一行创建一个带有 onClick 函数的锚点,指定信息。
-
研究 CSRF 预防。此外,您可能还想研究 XSS 预防。
-
@dunklesToast:这就是为什么您的
delete.php页面会验证发出请求的用户已授权执行该操作。如果用户未获得授权,则返回错误指示。删除记录的实际行为不会发生在 URL 中,而是发生在您的代码中。确保您的代码安全。 -
@David 验证用户并不能防止 CSRF 攻击。
标签: php html mysql sql database