在GWT RPC调用中编码请求有效负载

Har*_*han 3 gwt gwt-rpc

我正在使用GWT来创建我的网络应用程序.

从客户端(浏览器)进行RPC调用时,在inspect元素中,我的Request Payload如下:

7|0|8|https://xxxx.xxxx.in/TestProject/in.TestProject.Main/|87545F2996A876761A0C13CD750EA654|in.TestProject.client.CustomerClassService|check_User_Login|java.lang.String/2004016611|in.TestProject.Beans.CustomerBean/3980370781|UserId|Password|1|2|3|4|3|5|5|6|7|8|6|0|0|0|0|0|CustId|0|0|0|0|0|0|0|0|0|
Run Code Online (Sandbox Code Playgroud)

在此请求中,所有详细信息(如用户名,密码和custid)都显示在请求有效负载中.

我的问题是,是否可以编码或隐藏请求有效负载中的那些细节?

Igo*_*mer 7

你正在寻找错误的抽象层次.在有效载荷中编码/"隐藏"这些值有什么意义?无论如何,您在服务器和客户端之间交换的所有内容都可以被截获... 除非您使用HTTPS.它确保服务器和客户端之间的安全/加密通信.不要试图"聪明",只加密部分通信/有效负载,只需使用HTTPS.

但我担心的是客户端本身不应该看到我们正在进行哪个方法调用,请求中的参数类型,参数值等等.它应该从客户端隐藏.

但是这些参数值是由用户自己输入的,或者是在应用程序中的某个地方硬编码的(用户总是能够看到/解密,因为他的浏览器必须这样做).所以你想要实现的是通过默默无闻的安全性,这绝不是一个好主意.我将注意力集中在保护端点(GWT-RPC服务),验证发送的输入等方面.

您必须记住一件事 - 用户可以访问应用程序客户端部分的源代码(已编译和缩小,但仍然).所以:

  • 他总是能够弄清楚如何与您的服务器通信,因为您的应用程序必须这样做.
  • 他可以修改应用程序以发送恶意请求 - 即使您创建了一些编码参数/地址的假设方法.只需在编码完成之前找到一个地方就可以了.Firebug和其他开发人员工具将为您提供极大的帮助.

所以以这种方式"保护"客户端是没有意义的(当然,CSRF,XSS等应该是你的关注点),恶意用户总是会绕过它,因为你必须给他所有的工具来做 - 否则, "普通"用户(或者说他的浏览器)将无法使用您的应用程序.