php - $_POST、$_GET 和安全性

标签 php ajax post get

我想知道 $_POST$_GET 是否存在安全问题。

假设我有一个 AJAX 代码,它将数据发送到 PHP 文件,其中包含以下内容:

if(isset($_POST['id'])) {
  $client_id = mysql_real_escape_string($_POST['id']);
  $client_name = mysql_real_escape_string($_POST['name']);

    //Delete the Client
    $sql="DELETE FROM clients WHERE id='".$client_id."'";
    mysql_query($sql) or die(mysql_error());

    //Client Pages Delete
    $sql="DELETE FROM fanpages WHERE client='".$client_name."'";
    mysql_query($sql) or die(mysql_error());

现在假设 PHP 文件名为 delete.php ,任何用户都可以编写类似 delete.php?id=423&name=Jack 的内容,然后它就会喊出查询并删除客户端?

我一开始就考虑添加 COOKIE 检查,但据我所知 COOKIE 也可以伪造,对吗?

那么结合数据库请求来发出安全的 $_POST$_GET 请求的解决方案是什么?

编辑:所有这些都发生在用户密码安全区域内,但我询问的是唯一的delete.php文件,我是否需要添加COOKIE也检查这个文件吗?

编辑2:该脚本使用COOKIE而不是SESSIONS,我是否也应该将SESSIONS添加到系统中? cookie和session是否需要在同一个系统上?

最佳答案

诀窍是正确转义数据并防止 SQL injections 。如果要删除用户并且您想要更加安全,您可能还需要登录或其他东西。

session_start();

// ...

if (true === $_SESSION['userLoggedIn']) {
    // your code
}

当然,这需要您在提交登录表单后创建某种身份验证过程。 (例如,查询 MySQL 数据库并根据用户表测试用户名和密码)

Here is a great example!

关于php - $_POST、$_GET 和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292895/

相关文章:

php - 循环内的 SQL 查询

php - 如何在html复选框中加载mysql数据

鼠标离开浏览器窗口时的Javascript事件

security - 在 POST 请求上使用 XSS 窃取信息的场景是什么

post - react native 获取 "unsupported BodyInit type"

php - “i360: Error in global initialization”在PHP中是什么意思?

php - 如何以隐藏在html表单中的输入类型传递php数组

javascript - 在 React 中使用 useState 设置 promise 状态时应用程序不断重新渲染

html - 将内容加载到 div (jQuery)、更改 url 并从侧边栏导航进行控制

javascript - 将 JSON 列表从 Javascript 发送到 Django 后端并正确解析它