保护PHP和AJAX之间的POST请求 - 无用户输入

时间:2017-06-07 19:10:15

标签: php jquery ajax security post

我在网站上有一个简单的组件,它从页面上的产品集群中执行所有产品的查询,并将它们存储在jquery中的数组中。然后我通过AJAX将该数组发送到PHP作为POST,最终将对所有ID执行db查询。

我的问题是,如何保护来自AJAX / JS文件的数组进入POST中的PHP文件,防止用户操作......这意味着我可以在源代码中找到ID并将其更改为随机价值甚至是恶意的东西。

通常在用户输入场景中,您可以在PHP中执行真正的转义字符串或类似功能来覆盖传入数据。由于我发送了一组数值,保护POST请求的最佳方法是什么?

谢谢,

-S

1 个答案:

答案 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查询中使用它是安全的。

一些相关链接:

  1. PHP Prepared Statements
  2. I have an array of integers, how do I use each one in a mysql query (in php)?