防止从 url 读取后端 url

Prevent the backend url to be read from url

我知道标题有点混乱,但我会在这里解释一下。

我有一个 CMS 供用户插入他们自己的信息。所以在页面里面是一个 URL 字段:

这意味着用户可以插入任何格式,例如

  1. https://backend.com
  2. www.backend.com
  3. backend.com

而这个 url 将在前端放置一个按钮。一旦点击它,将相应地重定向到 url。

现在我面临的问题是第 3 点 (backend.com) 格式。如果用户输入“backend,com”并点击前端的这个按钮,他们将被重定向到https://mywebsite.com/backend.com。右边应该重定向到“backend.com”。

我正在使用 Laravel 并使用 {{$url}} 从数据库中读取数据。简化代码如下:

//html
<a id="book-submit">Book</a>

//javascript
$("#book-submit").on('click', function(){
    $.ajax({
        url: '',
        type: "POST",
        data:{
         },success :function(response) {
            window.location.href='{{$url}}';
        }
    })
});

//mysql
$check= DB::connection('mysql_api')->table('course')->select('url')->first();
$data['url'] = $check->url;

有什么方法可以防止这种情况发生吗?希望你们中的一些人能给我一些建议。谢谢!

要使用 window.location.href 引用另一个页面,您需要 http://https://

  1. 如果您的数据库中已有数据 url 而没有 http://https://,需要像你一样按照自己的逻辑去操作 使用 strpos 或 `regex
  2. 您可以验证用户输入

对于某些信息,您可以使用[FILTER_VALIDATE_URL]来验证URL

有关其他标志,请参阅 http://php.net/manual/en/filter.filters.validate.php