PHP and AJAX Security


PHP and AJAX Security

过去,当我用jQuery编写HTML时,为了访问特定的PHP页面,我总是这样做:

user.php?Action=1&User=Adrian.....

这将返回纯文本JSON,jQuery将其转换为javascript对象。不过,我对这种方法有一些疑问。

  1. 这安全吗?JSON以纯文本形式返回。它应该通过HTTPS使用吗
  2. 防止直接访问PHP的最佳方法是什么?只需检查活动会话
  3. 整个方法可以吗

干杯,Adrian

对于数字2,这取决于你在做什么。

如果您正在使用"user.php"文件对数据库进行任何更改,您可能希望使用POST而不是GET(这会从URL栏中隐藏参数,并且在您的页面被爬网/刮取时是安全的)。

要使用POST,请在user.php文件中将$_GET的实例替换为$_POST

在jQueryAjax调用中,确保参数"type"设置为"POST"

type: "POST",

GET请求应该只用于执行从数据模型(DB,随便什么)获取和显示数据的任何操作。POST请求用于进行任何更新、添加(更严格的是PUT)或删除(DELETE)。

如果只希望特定用户访问user.php脚本,则需要检查用户的会话,并确保它与尝试访问特定用户参数的用户匹配。

1)这取决于您要传输的内容。如果你是通过HTTPS传输信用卡数据,那是肯定的。如果您正在传输不太敏感的数据,也许不会。

2和3)确保检查SQL注入的输入,就像检查任何$_GET变量一样。你真的应该像对待$_GET数据一样对待它

每当我允许JSON/crud访问时,我总是使用基于会话的访问控制规则(基于角色或基于组的权限)来保护为其服务的PHP页面(user.php)。然后,我列出了允许用户/组/角色访问的表/字段的白名单。复杂程度取决于所提供数据的性质。