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

时间:2014-12-16 06:41:35

标签: gwt gwt-rpc

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

从客户端(浏览器)进行RPC调用时,在inspect元素中请求有效负载如下:

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|

在此请求中,所有详细信息,如用户名,密码和& custid显示在请求有效载荷中。

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

1 个答案:

答案 0 :(得分:7)

您正在查看错误的抽象级别。什么是编码/"隐藏"有效载荷中的这些值?无论如何,您在服务器和客户端之间交换的所有内容都可以被拦截...... 除非您使用HTTPS 。它确保服务器和客户端之间的安全/加密通信。不要试图变得聪明"并且只加密部分通信/有效负载,只使用HTTPS

  

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

但是这些参数值是由用户自己输入的,或者是在应用程序中的某个地方硬编码的(用户总是能够看到/解密,因为他的浏览器必须这样做)。所以你想要实现的是security through obscurity并且永远不是一个好主意。我将注意力和精力集中在保护端点(GWT-RPC服务),验证在那里发送的输入等等。

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

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

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