部署在Hostinger共享服务器的Laravel API路由如何防护?
解决Laravel API在共享服务器上的路由暴露问题
核心说明
浏览器能看到API路由是前端HTTP请求的固有特性——哪怕用AWS/Azure的私有网络,前端最终也要通过公网发起请求,所以核心不是“隐藏路由”,而是验证请求合法性和限制访问权限。
具体实现方案
1. 启用CSRF保护(同域场景)
如果前端和API在同域名下,必须开启CSRF验证防止跨站伪造:
- 前端请求自动携带CSRF令牌:
const csrfToken = document.querySelector('meta[name="csrf-token"]').content; fetch('/api/your-endpoint', { method: 'POST', headers: { 'X-CSRF-TOKEN': csrfToken, 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); - 确保Laravel的
web中间件组包含VerifyCsrfToken,若API路由用api组,可手动给敏感路由添加CSRF中间件。
2. API身份认证(无状态/跨域场景)
用Laravel Sanctum/Passport实现令牌认证,确保只有合法用户能访问:
- 给用户模型启用Sanctum:
use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; } - 前端请求携带令牌:
fetch('/api/your-endpoint', { method: 'GET', headers: { 'Authorization': 'Bearer ' + userToken, 'Content-Type': 'application/json' } }); - 路由添加认证中间件:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); });
3. 配置CORS限制请求来源
只允许你的前端域名访问API,修改config/cors.php:
return [ 'paths' => ['api/*'], 'allowed_methods' => ['*'], 'allowed_origins' => ['https://your-frontend-domain.com'], // 指定前端域名 'allowed_headers' => ['*'], 'supports_credentials' => false, ];
4. 共享服务器额外防护
利用Hostinger自带功能增强安全:
- 启用IP访问限制:在主机面板设置仅允许前端服务器IP或指定地区IP访问API目录;
- 用
.htaccess限制API目录:# 仅允许指定请求方法 <LimitExcept GET POST PUT DELETE> deny from all </LimitExcept> # 禁止直接列出目录文件 Options -Indexes - 开启Hostinger的Web应用防火墙(WAF),拦截SQL注入、XSS等恶意请求。
5. 优化路由命名(可选)
避免在路由中暴露敏感信息:
- 不用
/api/user/delete/123这类直白路由,改用/api/action/abc123,后端内部映射到对应逻辑; - 不在路由参数中暴露用户ID、业务关键词等敏感内容。
关键提示
路由URL暴露是正常现象,真正的安全核心是:
- 只有认证用户能访问API;
- 后端对每个请求做权限校验(比如用户只能操作自己的数据);
- 请求参数严格验证过滤。
内容的提问来源于stack exchange,提问作者JBA
相关产品推荐
相关产品推荐

