gpt4 book ai didi

php - PHP Web 服务的 $_POST 安全性

转载 作者:行者123 更新时间:2023-11-29 02:47:45 24 4
gpt4 key购买 nike

如果之前有人问过这个问题,如果它只是在评论中将我链接到它,我深表歉意。

因此,我使用 php 为 android/iOS 应用程序创建了一个网络服务,其工作方式如下。

  1. 该应用向 http://www.example.com/ws/getCookingData.php 发送请求,其中包含 2 个 $_POST 参数 userID foodType

  2. php 文件然后使用这两个变量查询数据库并返回 json_encode 结果。

我担心的是,如果有人发现了我的 Web 服务链接,他们可能会通过发布请求向它发送垃圾邮件,从而导致对我的数据库进行 100 次不必要的调用

下面是我当前的 getData.php 文件的示例

<?php
$userID = mysql_escape_string($_POST['userID']);
$foodType = mysql_escape_string($_POST['foodType']);

$mysqli = getDB();

echo json_encode(getDate($mysqli, $userID, $foodType); //mysql database interaction is here

$mysqli->close();
?>

这里没有任何东西可以阻止黑客试图将恶意 SQL 语句发布到我的数据库中

所以我想知道的是,如果我向名为 appID 的发布请求添加第三个参数,这会是一个好的解决方案吗?

例如,如果我将我的 getData.php 文件更新到下面,这样会更安全吗?还是我遗漏了一个漏洞?

<?php
$appID = $_POST['appID'];

if($appID === "hardCodedEquivalentID"){
$userID = mysql_escape_string($_POST['userID']);
$foodType = mysql_escape_string($_POST['foodType']);

$mysqli = getDB();

echo json_encode(getDate($mysqli, $userID, $foodType); //mysql database interaction is here

$mysqli->close();
}

?>

如果这是一个很好的解决方案,或者已经有一个等效的实践可以实现我正在尝试做的事情,请告诉我

最佳答案

首先,使用mysqliPDO 代替已弃用的mysql 函数。其次创建一个函数来验证用户并查看用户是否有权访问数据。第三,如果可能,请尝试将数据LIMIT 设置为 100 左右。

硬编码 appId 不是解决方案。为每个特定的注册用户创建唯一的 ID,然后将 appId 与该特定用户匹配。当他们的 session 过期时,清除访问 token 。在他们的 session 开始时,您可以登录他们并创建新的访问 token ,并可以在他们的整个 session 中使用它。

关于php - PHP Web 服务的 $_POST 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39754293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com