我正在使用grails app。当获取请求(例如,显示一个实体)时,该实体的id将显示在浏览器的URL中 对于安全问题,我尝试加密网址中的ID。任何想法我如何可以在grails中散列id /或任何参数。
http //url/controller/action/3
http //url/controller/action/08eab7690d2a6ee69
我想知道是否已构建的内容允许加密/解密grails中的查询参数。
如果我们可以在URLMapping文件中应用加密/解密机制,还有可能吗?
提前致谢
答案 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/