【问题标题】:Grails: encrypt query params, use hashing to encrypt/decrypt the params in url and hidden fieldsGrails:加密查询参数,使用散列加密/解密 url 和隐藏字段中的参数
【发布时间】:2017-04-20 10:16:36
【问题描述】:

我正在开发 grails 应用程序。当获取请求(例如显示一个实体)时,该实体的 id 将显示在浏览器的 url 中 对于安全问题,我正在尝试加密 url 中的 id。知道如何在 grails 中散列 id/或任何参数。

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

我想知道是否已经构建了允许加密/解密 grails 中的查询参数的东西。

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

提前致谢

【问题讨论】:

    标签: security grails encryption groovy urlmappings.groovy


    【解决方案1】:

    基本上不需要您自己制定加密/解密方法。我能问一下你为什么要加密它吗?是因为你有这种情况吗?

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

    因此,如果有其他加密替代方案,您加密的原因将是阻止其他人浏览其他请求。举个例子,我正在做类似的事情,但我所做的不是所有的加密开销,所以如果提供了 id,它还必须提供该 id 的用户名

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

    当我获得 ID 时,我还会检查是否有用户名参数,以及用户名是否与 id 用户名匹配 - 这会阻止其他人通过链接进行巨魔

    如果您仍想加密,请告诉我,我可以提供更多指导

    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
       }
    
    }
    

    如果高于 grails 2.4 并完成工作,则 CompileStatic 助手类

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

    【讨论】:

    • 感谢您的回复,实际上这里出于安全原因的要求是在url中不显示id本身​​,而是显示加密值url/controller/id1 ==>> url/controller/(encypted id) 所以,用户不会知道真实 ID,但他会看到加密的 ID
    • 您需要如何加密 - 有基本的可解密加密,我认为您可以反编译字符串的 md5,但用户也可以 - 或者完全加密需要密钥然后解密
    • md5 已经足够好了,我如何在 grails (view/controller) 中应用?
    • tothenew.com/blog/… avajava.com/tutorials/lessons/… 应该能帮到你 我相信我有一个更简单的方法会查找它并用另一条评论更新如果我稍后找到另一个评论 gist.github.com/ikarius/299062/…
    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多