Grails:加密查询参数,使用散列 encrypt/decrypt url 中的参数和隐藏字段
Grails: encrypt query params, use hashing to encrypt/decrypt the params in url and hidden fields
我正在开发 Grails 应用程序。何时获取请求(例如显示一个实体)该实体的 ID 将显示在浏览器的 url 中
出于安全问题,我正在尝试对 url 中的 id 进行加密。知道如何散列 grails 中的 id/or 任何参数。
http //url/controller/action/3
http //url/controller/action/08eab7690d2a6ee69
我想知道是否已经构建了允许 encrypt/decrypt grails 中的查询参数的东西。
另外,如果我们可以在 URLMapping 文件中应用 encryption/decryption 机制,有什么想法吗?
提前致谢
基本上不需要你自己制作encryption/decryption方法。我能问一下你为什么要加密它吗?是因为你有这个场景吗?
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
}
}
CompileStatic 助手 class 如果高于 grails 2.4 并且工作完成
放弃 md5 加密并使用适当的内部加密/解密和您可以更改的密钥,使其无法被最终用户加密,请参阅 https://github.com/vahidhedayati/md5id/
我正在开发 Grails 应用程序。何时获取请求(例如显示一个实体)该实体的 ID 将显示在浏览器的 url 中 出于安全问题,我正在尝试对 url 中的 id 进行加密。知道如何散列 grails 中的 id/or 任何参数。
http //url/controller/action/3
http //url/controller/action/08eab7690d2a6ee69
我想知道是否已经构建了允许 encrypt/decrypt grails 中的查询参数的东西。
另外,如果我们可以在 URLMapping 文件中应用 encryption/decryption 机制,有什么想法吗?
提前致谢
基本上不需要你自己制作encryption/decryption方法。我能问一下你为什么要加密它吗?是因为你有这个场景吗?
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
}
}
CompileStatic 助手 class 如果高于 grails 2.4 并且工作完成
放弃 md5 加密并使用适当的内部加密/解密和您可以更改的密钥,使其无法被最终用户加密,请参阅 https://github.com/vahidhedayati/md5id/