防止在自动完成(jQuery / Laravel)中从URL查看信息

时间:2017-02-12 16:50:00

标签: jquery json ajax laravel

我在这篇文章中实现了代码:

Autocomplete with ajax call(Json) in laravel, no response

它在laravel中使用ajax调用(json)。一切都很好。但是,该路线使用' get'并且可以使用URL查看查询结果。我认为这是一个安全和隐私问题。

在自动填充功能未直接调用信息时,阻止查看信息的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以通过验证设置参数的最小长度。将其放入控制器并限制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
}

答案 1 :(得分:0)

无法识别是从自动完成js还是从get请求调用它。

但是,您可以使用throttle middleware来阻止抓取自动填充数据。像这样使用这个中间件:'middleware' => 'throttle:60,1'。这限制了每分钟60个请求的请求,然后禁用1分钟的访问。请注意,api中间件组在Laravel 5.2中默认启用了throttle:60,1