我想知道 $_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 数据库并根据用户表测试用户名和密码)
关于php - $_POST、$_GET 和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292895/