JFinal如何验证参数是否合法(是否被恶意篡改)

发布于 2021-11-29 11:16:47 字数 614 浏览 855 评论 6

如题,我想实现的效果是,get请求传参,无视用户篡改参数,比如合法的url为/controller/method?id=123&city=456(第一次请求),controller会render到正确的页面,当用户篡改参数后,拦截器会无视当前无效的参数,直接携带上次请求中正确的参数并重定向至当前请求的方法(返回上次正确参数render的页面)。

我的思路:

写一个全局的拦截器,拿当前的actionKey做为cookie的key从cookie中获取参数,如果取不到,证明为第一次请求。并将请求参数放入cookie。如果取到,并且当前请求的参数与cooike中的参数不等,则视为参数被篡改,直接拿正确的参数重定向至当前请求的方法。

存在的问题:

该拦截器会拦截正常的请求,比如:

/controller/method?id=123&city=456 未篡改,正常的请求。

/controller/method?id=789&city=10 未篡改,正常的请求。

那以我上述逻辑,用户正常访问某一方法的第2次时(参数不一样,但参数是合法的。),拦截器依然会将此视为非法请求。

请大家帮我想想解决方案,谢谢。 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

屌丝范 2021-12-02 04:32:50

在参数里面再加一个签名(例如TIMESTAMP之类)呗,但这样对性能有一些影响,看你的应用需要了

小瓶盖 2021-12-02 04:31:24

引用来自“JFinal”的评论

   url 上面传参,是很容易被修改的,如果非得要让 url 上被改过的参数不生效,而在 url 参数被篡改后使用别的方式保障参数的正确性,建议参数放在 post 请求体内,并且使用 https 连接确保安全。理论上来说,只要是 http 都很容易被拦截和篡改,尤其是 session 劫持攻击,攻击者拦截到你的 session id 后,可以接管合法用户的请求成为授权用户。

可是我不能没有你 2021-12-02 04:09:30

   url 上面传参,是很容易被修改的,如果非得要让 url 上被改过的参数不生效,而在 url 参数被篡改后使用别的方式保障参数的正确性,建议参数放在 post 请求体内,并且使用 https 连接确保安全。理论上来说,只要是 http 都很容易被拦截和篡改,尤其是 session 劫持攻击,攻击者拦截到你的 session id 后,可以接管合法用户的请求成为授权用户。

柠檬 2021-12-01 16:27:29

@JFinal波总,求指点!!

小瓶盖 2021-12-01 01:22:17

大家可以一起来探讨啊,非常感谢。

不乱于心 2021-11-30 04:27:31

引用来自“JFinal”的评论

   url 上面传参,是很容易被修改的,如果非得要让 url 上被改过的参数不生效,而在 url 参数被篡改后使用别的方式保障参数的正确性,建议参数放在 post 请求体内,并且使用 https 连接确保安全。理论上来说,只要是 http 都很容易被拦截和篡改,尤其是 session 劫持攻击,攻击者拦截到你的 session id 后,可以接管合法用户的请求成为授权用户。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文