【问题标题】:How to change the servletRequest content length in the filter如何更改过滤器中的 servletRequest 内容长度
【发布时间】:2016-08-10 13:26:16
【问题描述】:

我正在尝试加密从我的 Web 应用程序发送到我的服务的 POST 正文请求。

并且加密是在过滤器中完成的。

我遇到了内容长度的问题,在JavaScript 和过滤器中为帖子调用设置了内容长度,随着加密完成,内容长度发生变化(长度增加)以及传输数据时对于服务,数据将被截断为其最初(加密之前)的数据长度,这使得数据无法使用。

加密代码:

public void jsonEncrypt(String passPhrase, int iterationCount, int keySize, String salt, String initializationVector) throws IOException { 
    String json = new String(body, StandardCharsets.UTF_8); 
    AesUtil aesUtil = new AesUtil(keySize, iterationCount); 

    encryptJsonText = aesUtil.encrypt(salt, initializationVector, passPhrase, json); 
    byte[] b = encryptJsonText.getBytes(); 
    body = b; 
}

【问题讨论】:

  • 能否提供用于加密和发送数据的代码?如果您需要加密,为什么不依赖HTTPS
  • 以下是我用来加密 JSON 的方法我有一个要求,请求不应该是可读格式,这样请求数据就不会被操纵。 public void jsonEncrypt(String passPhrase, int iterationCount, int keySize, String salt, String initializationVector) throws IOException { String json = new String(body, StandardCharsets.UTF_8); AesUtil aesUtil = new AesUtil(keySize, iterationCount); encryptJsonText = aesUtil.encrypt(salt, initializationVector, passPhrase, json); byte[] b = encryptJsonText.getBytes(); body = b; }
  • 我已经编辑了你添加代码的问题,下次记住你应该编辑问题而不是在评论中发布代码。顺便说一下,这是服务器端加密,对吧?
  • 谢谢...是的。这是服务器端加密。

标签: javascript jquery ajax servlets encryption


【解决方案1】:

我能够解决我覆盖 getContentLength() 方法以返回新长度的问题。通过这个我能够加密请求正文并将其发送到我的服务,在那里我解密正文并使用它。

【讨论】:

    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多