rails2.0中的protect_from_forgery
rails2.0为了防范CSRF (Cross-Site Request Forgery)攻击,提供了一个小小的手段,那就是protect_from_forgery,对于从1.x升级而来的我,确为此头疼了几个小时。
按照1.x的惯例,我写了几个接受post方法的action,并且在其中设置了断点,然后debug,但是无论怎样,程序在断点处都不会停住。而采用get方法直接访问,就会在断点处停止。最开始怀疑的是Module ActionController::Verification::ClassMethods中的verify方法,是不是不允许post访问,结果试了几次,发现症状不同。所以继续思考,这个时候基本上已经是确定filter环节的问题,因为这些action是通过ajax调用,所以看不到错误信息,为了看到错误信息,手动写了个form,然后执行submit,结果出现错误页面如下:这样一来,事实就清楚了,请查看:
http://api.rubyonrails.org/class ... n/ClassMethods.html
就可以解决一切问题了。 |