http://www.dewen.io/q/5511
我有一串URL www.abc.com?para=xxx 在页面中点击按钮后用ajax执行此URL后,后台会执行一些操作,页面通过ajax的响应结果继续完成接下来的操作。这里是没登录的情况下,没有用户标志这种session的。 但是如果遇到懂程序的人,如果发现了这个接口的调用方法,就可以使用一些Http模拟提交的工具来请求这个接口,从而引发系统安全问题。 我不想通过IP进行访问次数和访问时间的限制,同样不想使用验证码,这样很影响用户使用的体验。 用HTTP_REFERER来判断HTTP来路,也不可靠,有没有什么更好的办法比较有效地阻止这种行为?
iceskysl
5 票
之前写过一篇文章《CSRF: 不要低估了我的危害和攻击能力》,比较长,就不贴过来了,需要的自己过去看~
大致总结如下,总体来说,预防CSRF主要从2个方面入手,分别是: 1、正确使用GET,POST和COOKIE; 2、在non-GET请求中使用Security token;
alexlee
3 票
可以对请求进行限制,如果不是采用ajax方式请求的可以拒绝请求 $AJAX = ('XMLHttpRequest' == @$_SERVER['HTTP_X_REQUESTED_WITH']); if(!$AJAX) exit; ....
法外制裁者
2 票
页面载入时服务器端产生加密key,js使用key加密参数,提交到服务器,由服务器解密后运行,解密失败的无视请求。
缺点也存在,那就是加密是在js处进行的,如果被人深入依旧可以使用程序调用。
限制这种调用的最优方法就是在服务器端,不想使用session登录信息判断的话,这就很难操作。只能将js复杂化,增加他人解读难度。
我不想通过IP进行访问次数和访问时间的限制,同样不想使用验证码,这样很影响用户使用的体验。
可以使用session进行时间间隔判断,例如载入页面到提交参数时间间隔过短的,很有可能是程序自动提交,毕竟浏览器载入,渲染都是需要时间的。
灵剑2012
综上所述,有用的方法就只有你说的那两种:通过IP进行访问次数和访问时间的限制,验证码 百度贴吧之类的大型网站防范程序发帖也是用的这两种方法,如果有更好的方法他们早就用了。可以考虑把这两种合起来,没超过访问次数和访问时间限制就正常访问,否则要求验证码,这样算是一个权衡吧。
abbish
1 票
如果你的应用不是到处都是这种按钮的话,最好的方法还是验证码和访问限制,如果很多,那还是优化流程设计减少按钮吧
秋叶
1.假如是需要登录才可以调用的接口,那么每次进行操作的时候都进行登录判断即可。 2.假如是不需要登录可以操作的接口,那么就在ajax 的url 添加上 加密( 时间 + 常量 + ip) 后端反解密,成功代表请求正常,反之失败, 接受到数据的时候再判断下 一定时间内ip 请求次数是否过多,如果是的话 一直返回失败....
yunnysunny
0 票
要想完全安全只能走pki,那一套了。
guwangren
服务端生成密钥,传递给客户端,服务端再验证
社区维基
你要识别 机器与用户 只有 验证码一条路可以走了
fjyxian
www.abc.com?para=xxx&sign=md5(key.xxx) 接收para变量时, 验证sign
xavier007
HTTP_REFERER这个你是用的什么语言,整个数据必须用Javascript获得,然后传给服务器,因为除了Javascript其他语言的referer都是可以伪造的,Javascript的不可以伪造,当然对于Javascript也是有办法的,不过这个是最准确的,百度统计等等级网站都是用的Javascript判断来路
victorzuo
所有的登录请求都可被模拟,看模拟人水平如何了。杀毒软件也是先有病毒后杀毒,做不到完全的安全,只能通过一些手段减少。 一、通过后台你可以清楚看到恶意点击来源,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