我在网站上有一个简单的组件,它从页面上的产品集群中执行所有产品的查询,并将它们存储在jquery中的数组中。然后我通过AJAX将该数组发送到PHP作为POST,最终将对所有ID执行db查询。
我的问题是,如何保护来自AJAX / JS文件的数组进入POST中的PHP文件,防止用户操作......这意味着我可以在源代码中找到ID并将其更改为随机价值甚至是恶意的东西。
通常在用户输入场景中,您可以在PHP中执行真正的转义字符串或类似功能来覆盖传入数据。由于我发送了一组数值,保护POST请求的最佳方法是什么?
谢谢,
-S
答案 0 :(得分:1)
假设您希望从客户端接收整数值数组。
如果您使用原始PHP编写代码,那么您的代码可能如下所示:
if (isset($_POST['ids']) && is_array($_POST['ids'])) {
$ids = array_map('intval', $_POST['ids']);
$ids = array_unique($ids); // Optional.
print(implode(', ', $ids)); // Print values.
}
用户输入示例:
ids[]=1&ids[]=2&ids[]=3&ids[]=malicious_input&ids[]=1
输出:
1, 2, 3, 0
intval
接受参数并返回它的整数表示。 malicious_input
变为0
,在SQL查询中使用它是安全的。
一些相关链接: