java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?
发现一个问题,恶意用户可能不通过web程序提供的页面。而是直接通过浏览器地址栏访问系统,更有甚者自己编写html页面,提交数据到服务器,绕过前段js验证。现在的问题是,服...
发现一个问题,恶意用户可能不通过web程序提供的页面。而是直接通过浏览器地址栏访问系统,更有甚者自己编写html页面,提交数据到服务器,绕过前段js验证。
现在的问题是,服务器端如何知道当前的请求(get或post)是web程序发出去的,而不是用户自发的访问系统或攻击行为?排出session问题,因为用户登陆了系统后,session已存在,他猜到服务器访问路径,可以通过浏览器地址栏或自制表单访问。请大师们帮帮忙,感谢哈! 展开
现在的问题是,服务器端如何知道当前的请求(get或post)是web程序发出去的,而不是用户自发的访问系统或攻击行为?排出session问题,因为用户登陆了系统后,session已存在,他猜到服务器访问路径,可以通过浏览器地址栏或自制表单访问。请大师们帮帮忙,感谢哈! 展开
1个回答
展开全部
一个简单的方法是,在用户获取html页面的时候,后台生成一个(MD5)字串(假设为k),并且返回给前端。
提交表单的时候,顺带也把这个k一起提交。
在处理提交的地方(后台),去校验这个k,看看是不是自己生成的。
如果用户伪造http请求,那么自然是不带k的,或者k是错误的。
还可以判断http请求头,比如UserAgent之类的,用于 辅 助 判断请求的合法性。
提交表单的时候,顺带也把这个k一起提交。
在处理提交的地方(后台),去校验这个k,看看是不是自己生成的。
如果用户伪造http请求,那么自然是不带k的,或者k是错误的。
还可以判断http请求头,比如UserAgent之类的,用于 辅 助 判断请求的合法性。
追问
1、MD5字符串如何返回前段?用表单隐藏域吗?
这样吗?
这样的话,客户端是可以通过查看源代码看到这个md5字符串的啊……
2、UserAgent具体怎么用啊?
追答
客户端是可以看到,但是这个md5只能使用一次。
UserAgent是一个http头,表示浏览器标识。不过这个可以被伪造。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询