二、解决SpringMVC前端发送到后端中文乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二、解决SpringMVC前端发送到后端中文乱码问题相关的知识,希望对你有一定的参考价值。

参考技术A 遇到SpringMVC框架中,从前端form表单中传递中文到后端Controller时,Controller接收到数据出现乱码问题时:
在SpringMVC的web.xml中加入一个过滤器即可解决

签署从前端到后端的 api 调用

【中文标题】签署从前端到后端的 api 调用【英文标题】:signing api calls from frontend to backend 【发布时间】:2018-04-01 07:18:09 【问题描述】:

我正在为前端使用密钥实现与后端通信的安全方式。后端是一项敏感服务(手机银行)。

首先我想到的是 JWT,但基于令牌的方法有两个缺点:

a) 前端必须获得令牌,这意味着它必须向后端发送一些身份验证数据 - 如果前端可以这样做,任何人都可以这样做。

b) 即使有某种安全的方式来获取令牌,任何人都可以启动 Chrome 开发工具并在它未过期的情况下使用它。

因此,另一种方法是使用密钥对来自前端的每个请求进行签名。密钥是后端已知的,前端是经过捆绑和丑化的,以保持密钥的秘密。我们连接请求 URL 及其有效负载,使用密钥对其进行加密,并将生成的哈希发送到标头中。后端获取请求,进行相同的加密并比较标头;如果它们相等 - 它会提出请求。

这引出了三个问题:

这是否真的意味着即使请求被嗅探也无法复制,除非url+payload相同?我有什么遗漏吗?

是否有实现这种方法的 JS 库? (或者也可能是后端的东西 - 我正在使用 Django)

有更好的方法吗?

【问题讨论】:

这不是一种特别安全的方法:这是通过混淆实现的安全性。虽然钥匙通过丑化隐藏在前端,但只要努力了,还是可以找到的…… 与其推出自己的解决方案,不如考虑使用一些久经考验的方法,例如 OAuth。前端和后端都有可用的库/工具包(Django OAuth Toolkit) JWT 完全按照您想要重新创建的方式执行,但方式更加安全。如果您的秘密在客户端,那么弄清楚它是微不足道的。 【参考方案1】:

随心所欲地捆绑,如果您授权请求的安全密钥在 js 中,我将能够取消丑化(美化)并获取它。使用 SSL 加密连接,只使用 JWT ;)

http://jsbeautifier.org/

无论如何,您都必须以某种方式授权用户,因此这意味着发送私人数据以建立“会话”。让它成为用户名、电子邮件、密码或一些“秘密”令牌。

【讨论】:

以上是关于二、解决SpringMVC前端发送到后端中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 前端用RSA.js加密 传到后端解密有乱码

javaweb 解决jsp中${}传递中文值到后端以及get请求中文乱码的问题

java servlet 中文乱码问题解决

关于前端form提交表单,后端springmvc接收的问题

Spring MVC 学习笔记 --- [SpringMVC的几个注解标签说明,获取请求数据,springmvc提供的中文乱码过滤配置]

如何自动获取用户的地理位置值并将其作为 POST 请求发送到后端