【问题标题】:Create Encrypted Cookie using javascript that Laravel can decrypt使用 Laravel 可以解密的 javascript 创建加密的 Cookie
【发布时间】:2018-08-21 03:34:51
【问题描述】:

我正在尝试使用 Laravel 可以理解的 Javascript 代码创建一个加密的 cookie。

我当前的 laravel 项目包含一个纯 JS 代码。在那个 JS 代码中,我显示了一个 JQVMAP.com 地图,人们单击以定义他们的国家。为了创建位置 cookie,我包含了以下代码:

setCookie(cookieName, code, 60); // minutes

问题是该值是以纯文本形式创建和存储的 -> EG: 'US'

但是,对于 Laravel,我需要以与 laravel 加密生成 cookie 相同的方式创建一个 cookie,其中“美国”数据表示如下:

eyJpdiI6IjBlYlZqUU14ZWt4Q2FKUjNJd25BM.....

老实说,尽管我阅读了 stackoverflow 和 google,但我无法找到一种方法来做到这一点。

任何帮助表示赞赏

【问题讨论】:

  • 为什么要加密值?您使用客户端 JS 所做的任何事情都可以由您的最终用户修改。你不能相信它。
  • 谢谢@Chris,不是为了安全。问题是,如果不安全,laravel 无法解释该值。我试图在 Middleware\Encryptcookies.php 的异常中包含一个 cookie,但我有同样的问题。这就是我问的原因。 brgds
  • @Chris laravel 指南:“Laravel 框架创建的所有 cookie 都经过加密并使用验证码签名”因此使用 {{Request::cookie('cookie name')}} 时没有值如果是纯文本,则检索

标签: javascript php encryption cookies laravel-5


【解决方案1】:

我对 Laravel 不是很熟悉,但它应该可以让你像 Symfony 一样使用纯 PHP。在这种情况下,您可以使用 PHP $_COOKIE 变量读取 cookie。

或者,您可以使用 ajax 调用 Laravel 并让它设置 cookie。

【讨论】:

    【解决方案2】:

    Laravel、Phalcon 等大多数 PHP 框架都使用 base64 编码/解码方法来保护 cookie 值。因为base64方法是唯一的双向加密,也就是说你加密一次就可以得到实际的值/字符串,另一个意思是你可以将值解密成实际的值。

    所以,找找 Laravel 的源代码他们用的是什么方法。如果是base64,那么你可以使用javascript base64加密/解密功能来保护cookie值,然后再存储到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2013-01-11
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      相关资源
      最近更新 更多