Grails:加密查询参数,使用散列来加密/解密url和隐藏字段中的params

时间:2017-04-20 10:16:37

标签: security grails encryption groovy urlmappings.groovy

我正在使用grails app。当获取请求(例如,显示一个实体)时,该实体的id将显示在浏览器的URL中 对于安全问题,我尝试加密网址中的ID。任何想法我如何可以在grails中散列id /或任何参数。

http //url/controller/action/3
http //url/controller/action/08eab7690d2a6ee69

我想知道是否已构建的内容允许加密/解密grails中的查询参数。

如果我们可以在URLMapping文件中应用加密/解密机制,还有可能吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

基本上你不需要制作自己的加密/解密方法。我可以问你为什么要加密它。是因为你有这种情况吗?

http://url/controller/id1
http://url/controller/id2

因此加密的原因是阻止其他人浏览其他请求,如果有其他替代加密的话。作为一个例子,我正在处理类似的事情,但我没有加密的所有开销,所以如果提供了id,它还必须提供该id的用户名

http://url/controller/id1?username=username
http://url/controller/id1?username=username2

当我得到身份证时,我还会检查是否有用户名参数,如果用户名与用户名匹配,则会阻止其他人通过链接进行转播

如果您仍希望加密,请告知我,我可以提供更多指导

def MyController {
  def index() {
     if (params.id) {
        params.id=Md5Helper.translate(params.id)
     }
  }
}
src/groovy/main/{package}/Md5Helper.groovy

中的

class Md5Helper.groovy {

   //return deconverted string into Long value
   public static Long translate(String input) {
     //do your md5 decryption here
      if (result.isNumber()) {
         return result as Long
      }
      return 0L
   }

   //override so when default Long is sent just return it
   public static Long translate(Long input) {
      return input
   }

}

CompileStatic是帮助类,如果上面的grails 2.4和work done

远离md5加密并使用适当的内部加密/解密,您可以更改密钥,使最终用户无法加密,请参阅https://github.com/vahidhedayati/md5id/