过去,当我用 jQuery 编写 HTML 时,为了访问特定的 PHP 页面,我总是这样做:
user.php?Action=1&User=Adrian.....
这将返回纯文本 JSON,jQuery 将其转换为 javascript 对象。不过,我对这种方法有一些疑问。
- 这安全吗?JSON 以纯文本形式传回。它应该通过 HTTPS 使用吗?
- 防止直接访问 PHP 的最佳方法是什么?只是检查活动会话?
- 这整个方法可以吗?
干杯,阿德里安
对于数字 2,这取决于您在做什么。
如果您正在使用“user.php”文件对数据库进行任何更改,您可能希望使用 POST 而不是 GET(这会隐藏 URL 栏中的参数,并且如果您的页面被抓取/刮)。
要使用 POST,请在您的 user.php 文件中将实例替换$_GET
为$_POST
.
在您的 jQuery Ajax 调用中,确保参数“type”设置为“POST”
type: "POST",
GET 请求应该只用于从您的数据模型(DB,等等)获取和显示数据的任何事情。POST 请求用于进行任何更新、添加(更严格的是 PUT)或删除(DELETE)。
如果您只希望该特定用户访问 user.php 脚本,那么您需要检查用户的会话并确保它与尝试访问特定用户参数的用户匹配。
1)这取决于您要转移的内容。如果您通过 HTTPS 传输信用卡数据,那肯定是。如果您正在传输不太敏感的数据,也许不会。
2 和 3) 确保检查 SQL 注入的输入,就像检查任何 $_GET 变量一样。你真的应该像平常对待 $_GET 数据一样对待它
每当我允许 JSON/crud 访问时,我总是在user.php
基于会话的访问控制规则(基于角色或基于组的权限)之后保护为其提供服务的 PHP 页面()。然后,我将允许用户/组/角色访问的表/字段列入白名单。复杂程度取决于所服务数据的性质。