http://www.dewen.io/q/5511
我有一串URL www.abc.com?para=xxx
在页面中点击按钮后用ajax执行此URL后,后台会执行一些操作,页面通过ajax的响应结果继续完成接下来的操作。这里是没登录的情况下,没有用户标志这种session的。
但是如果遇到懂程序的人,如果发现了这个接口的调用方法,就可以使用一些Http模拟提交的工具来请求这个接口,从而引发系统安全问题。
我不想通过IP进行访问次数和访问时间的限制,同样不想使用验证码,这样很影响用户使用的体验。
用HTTP_REFERER来判断HTTP来路,也不可靠,有没有什么更好的办法比较有效地阻止这种行为?
之前写过一篇文章《CSRF: 不要低估了我的危害和攻击能力》,比较长,就不贴过来了,需要的自己过去看~
大致总结如下,总体来说,预防CSRF主要从2个方面入手,分别是:
1、正确使用GET,POST和Cookie;
2、在non-GET请求中使用Security token;
- 我觉得不登录就能用的接口如果也能引发安全问题的话,这个属于设计问题吧……如果是Ajax登录之类的接口的话另当别论
- 浏览器能做的任何操作,程序都是可以模拟的。因为浏览器也是程序。因此所谓防范毫无意义。验证码之类的机制虽然可以防止全自动,但至少也可以半自动(手输验证码)。真正防范大量自动或半自动调用的方法只有按IP的访问量限制。
- Session是没用的。Session是靠Cookies来工作的,清掉Cookies又是一个新的Session
综上所述,有用的方法就只有你说的那两种:通过IP进行访问次数和访问时间的限制,验证码
百度贴吧之类的大型网站防范程序发帖也是用的这两种方法,如果有更好的方法他们早就用了。可以考虑把这两种合起来,没超过访问次数和访问时间限制就正常访问,否则要求验证码,这样算是一个权衡吧。
所有的登录请求都可被模拟,看模拟人水平如何了。杀毒软件也是先有病毒后杀毒,做不到完全的安全,只能通过一些手段减少。
一、通过后台你可以清楚看到恶意点击来源,IP直接禁止
二、系统会根据您的频率设置要求,一般的模拟都是有规律的。
增加 防恶意点击阻击功能
1、不采取动作:只记录不对恶意点击访客采取阻击动作,可以正常访问网站;
2、警告并提示收藏:提醒访客将网站添加到收藏夹,下次访问就不用再点广告链接进入网站(警告内容及收藏可以在全局参数设置中定义);
3、网站跳转:拒绝访客访问,直接转向用户自定义的网站;
4、关不掉的对话框:对方电脑弹出关不掉的对话框;
5、黑屏:对方电脑显示黑屏效果,关闭时出现关不掉的对话框;
6、弹窗死机:对方电脑不断弹出窗口,直到电脑资源耗尽瘫痪;
7、组合攻击:多种阻击联合执行
8、病毒植入:给恶意访客的电脑稙入病毒
接收para变量时,
验证sign – fjyxian 2012-09-18
[1]: http://www.oschina.net/question/12_72060 – 明月照大江 2012-10-07