【生产环境事故】求个解决JSP页面form的恶意请求提交提交?
问题是这样的:
我做了一个投票的应用系统,上线好几天了,今天客户正式使用,
统计了下,客户的并发使用系统投票的人也就几十个,但是只要应用启动,后台CPU资源就占用到90%多,
一停止就好了,刚开始我们以为SQL没有优化或者SQL访问数太大,后来我们就做了缓存发现应用一启动CPU还是占用90%,
组后我们就分析投票进来的数据,就发现每秒钟大概有20条数据被插入到数据库当中,也就是投票的那个action被非法提交的N次,因为我前台做了严格的JS验证,只要任何一个输入项(如身份证、手机号)为空或者不正确都无法提交action的,
所以现在来求请求有什么好的屏蔽恶意提交action办法吗 ?
------解决方案--------------------
(1)获取来源地址,如果不是你页面提交的地址,拒绝执行!
(2)随机验证码,判断输入验证码是否你系统产生的随机码,否则拒绝执行!
(3)同一个IP时间间距控制,可以设置半小时内才能投票一次!或者直接做的狠点,一个IP只能投票一次。
上述三点只能解决一般入侵,如果要做到更好,就必须在硬件方面做点功夫了。