java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?相关的知识,希望对你有一定的参考价值。

发现一个问题,恶意用户可能不通过web程序提供的页面。而是直接通过浏览器地址栏访问系统,更有甚者自己编写html页面,提交数据到服务器,绕过前段js验证。
现在的问题是,服务器端如何知道当前的请求(get或post)是web程序发出去的,而不是用户自发的访问系统或攻击行为?排出session问题,因为用户登陆了系统后,session已存在,他猜到服务器访问路径,可以通过浏览器地址栏或自制表单访问。请大师们帮帮忙,感谢哈!

参考技术A 一个简单的方法是,在用户获取html页面的时候,后台生成一个(MD5)字串(假设为k),并且返回给前端。

提交表单的时候,顺带也把这个k一起提交。

在处理提交的地方(后台),去校验这个k,看看是不是自己生成的。

如果用户伪造http请求,那么自然是不带k的,或者k是错误的。

还可以判断http请求头,比如UserAgent之类的,用于 辅 助 判断请求的合法性。追问

1、MD5字符串如何返回前段?用表单隐藏域吗?
这样吗?
这样的话,客户端是可以通过查看源代码看到这个md5字符串的啊……

2、UserAgent具体怎么用啊?

追答

    客户端是可以看到,但是这个md5只能使用一次。

    UserAgent是一个http头,表示浏览器标识。不过这个可以被伪造。

本回答被提问者采纳

以上是关于java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

java泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证

【WEB安全】防止CSRF攻击

java web如何防止html,js注入

八漏洞原理利用验证码绕过,密码找回漏洞 笔记和靶场

Go语言SQL注入和防注入

Web安全之验证码绕过