PHP加密 - JS解密。安全问题

时间:2018-02-12 09:21:54

标签: javascript php encryption encoding

我有一堆我的网站需要调用外部服务器来询问一些数据。该服务器包含合理的信息,例如需要在网站上应用的折扣代码,基于用户的行为。

由于我无法对用户的操作进行同步ajax调用(不建议使用和不良做法),所以每当用户在这些网站上加载页面时,我都会执行异步调用。 该调用检索所有可能的折扣代码,但我希望人们无法对其进行解码并免费获取。 服务器创建一个json数组并将其编码为base64,然后用户浏览器中的JS将解码它(atob()函数)给我需要使用的json。

我想对此进行加密,就像字母交换算法一样。这意味着即使用户读取我的json结果也无法读取它但是当我的JS代码尝试解码它时它可以读取它(与调试器暂停)。

所以我的问题是:javascript混淆可以解决我的问题吗?我的JS将包含将我的字符串恢复为其原始形式的算法,但整个代码被混淆,因此调试器将无法工作。这是一个安全的方法吗?如果没有,我怎么能安全地做到这一点?

总结一下,系统的工作原理如下:

1.User加载网站

页面

2.JSONP AJAX呼叫从我的服务器询问所有可用的折扣代码

3.Server获取列表,生成它的JSON并返回此json的base64字符串

4.Client得到这个,当他点击特定的东西时,我解码json并根据计算应用正确的折扣。

我希望你能够提出一些建议:)

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您在客户端计算机上进行解密,则无法使其安全。您可以应用模糊处理或其他隐藏进程的方法,但最终代码中有一点可以进行解密,并且可供客户端使用。你不应该在客户端这样做。

你可以这样做:

  1. 网站加载
  2. 它会发送促销代码请求以及用户详细信息。
  3. 您只发送可供该用户使用的数据。
  4. 通过这种方式,您不需要加密任何东西,但它将涉及一些重新思考和更改服务器端逻辑。

    可能有另一个解决方案,这个问题很糟糕,还需要更改服务器。 发送已发送的代码,但发送不完整。也许删除最后2位或更多位数。然后用户请求激活促销,并发送不完整的代码。然后查看开始的表格代码(例如'%'),并在服务器端创建工作代码。