关于asp和asp.net防止外部提交的提问
以前总是觉得用
在asp中用Request.ServerVariables("HTTP_REFERER")
在asp.net中用Request.UrlReferer
都能判断是否是外部提交的数据。
但是发现http的header竟然能伪造。于是上面的方法就没什么效果了。
于是想到要用网站的一个私钥以某种算法结合一个随机的变量得出一个token,在form里面传这个token值给接收页面来交验。这种方法在asp和asp.net估计都行的通。
后来又觉得每个接收参数的页面都要这样太麻烦了。
于是想到了asp.net的逻辑通常是写在某个button的OnClick事件中的,也就是说是基于事件来触发逻辑的,这样一来也就是说只要把逻辑写进事件中,asp.net页面就不存在外部提交的可能了,也就不用生成token来比对,再判断是否是外部提交了,但是asp不是基于事件来的,所以要避免外部提交的话,还是要用token来比对。
所以我觉得asp.net只要把逻辑写进某个button的OnClick事件的话,就可以避免该页面被外部提交了,也就是不用像asp那样来比对token了。
我这样理解可以吗?