
本文介绍通过请求方式控制与服务端校验相结合的方法,限制如 refreshdata.php 等 ajax 后端脚本被恶意直连访问,提升基础安全性。需注意:纯前端手段无法绝对阻止访问,关键在于服务端主动识别并拒绝非预期请求。
本文介绍通过请求方式控制与服务端校验相结合的方法,限制如 refreshdata.php 等 ajax 后端脚本被恶意直连访问,提升基础安全性。需注意:纯前端手段无法绝对阻止访问,关键在于服务端主动识别并拒绝非预期请求。
在 Web 开发中,常使用 jQuery 的 .load() 或 $.ajax() 动态加载 PHP 数据(如刷新表格内容),但这类脚本若未加防护,极易被攻击者通过浏览器直接访问(例如 https://example.com/refreshdata.php),导致敏感数据泄露、资源滥用甚至逻辑绕过。
最有效且轻量的防护策略是服务端校验请求来源,而非依赖前端隐藏路径或混淆参数。推荐采用以下组合方案:
✅ 1. 强制使用 POST 请求(推荐)
将 .load() 改为显式 POST 请求,并在服务端验证请求方法:
function refreshTable() {
$.post('refreshdata.php', { _ajax: true }, function(response) {
$('#tableHolder').html(response);
setTimeout(refreshTable, 10000);
});
}
对应 refreshdata.php 开头添加严格校验:
<?php // refreshdata.php
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['_ajax'])) {
http_response_code(403);
exit('Access denied.');
}
// ✅ 此处执行合法业务逻辑(如查询数据库、生成 HTML 表格)
echo '<table>...';
?>
✅ 2. 补充 HTTP 头或 Referer 校验(辅助增强)
可进一步检查 X-Requested-With(jQuery 默认发送)或 Referer,但不可单独依赖(Referer 可伪造):
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) ||
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
http_response_code(403);
exit;
}
⚠️ 注意事项
- ❌ 不要仅靠 JS 参数欺骗(如 ?token=123):URL 参数易被窥探和复用;
- ❌ 避免 file_exists(__FILE__) && !defined('IN_AJAX') 类弱校验:无实际防护力;
- ✅ 始终以服务端主动拒绝为核心:403 响应 + 明确退出,杜绝任何后续执行;
- ✅ 敏感操作务必二次鉴权:如用户登录态校验($_SESSION['user_id'])、CSRF Token 验证等,不能仅靠“是否为 AJAX”。
综上,真正的安全不在于“隐藏”,而在于“授权”——让 refreshdata.php 明确只响应受信任的、符合约定的请求。结合 POST + 自定义标识 + 服务端强制拦截,即可在不引入复杂框架的前提下,显著降低未授权直连风险。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











