我在这个岗位执行代码:保持信息
Autocomplete with ajax call(Json) in laravel, no response
它使用laravel Ajax调用(JSON)。一切运作良好。但是,路由使用“get”,查询结果可以使用URL查看。我认为这是一个安全和隐私问题。
当自动完成不直接调用信息时,保持信息不被查看的最佳方式是什么?
我在这个岗位执行代码:保持信息
Autocomplete with ajax call(Json) in laravel, no response
它使用laravel Ajax调用(JSON)。一切运作良好。但是,路由使用“get”,查询结果可以使用URL查看。我认为这是一个安全和隐私问题。
当自动完成不直接调用信息时,保持信息不被查看的最佳方式是什么?
您可以通过验证设置参数的最小长度。将其放入您的控制器并限制js代码minLength: 3
中的最小长度。
use Validator; // at the top of controller
public function search(Request $request) {
$v = Validator::make($request->all(), [
'q' => 'required|min:3',
]);
if ($v->fails()) {
return [];
}
// now you are sure that q has minimum 3 chars
// search and output
}
无法识别它是从自动完成js还是从get请求中调用。
但是,您可以使用throttle middleware来防止抓取自动填充数据。像这样使用这个中间件:'middleware' => 'throttle:60,1'
。这限制了每分钟60个请求的请求,然后禁止访问1分钟。请注意,api中间件组在Laravel 5.2中默认启用throttle:60,1
但是为什么?每个自动完成请求都可以通过'curl'来重现。 –
shukshin.ivan你能详细说明吗? –
您还没有回答。为什么?从什么样的要求保护,简单得到? –