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

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

第1个回答  推荐于2016-05-04
一个简单的方法是,在用户获取html页面的时候,后台生成一个(MD5)字串(假设为k),并且返回给前端。

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

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

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

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

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

2、UserAgent具体怎么用啊?

追答

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

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

本回答被提问者采纳