【问题标题】:HTML - MySQL Table delete entryHTML - MySQL 表删除条目
【发布时间】: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


【解决方案1】:

是的。

1,你需要控制谁可以删除一个项目,这是一个rbac系统。

2,删除应该使用POST而不是GET。

3、使用PDOStatement::bindParam防止sql注入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多