php防止站外提交数据 php怎样阻止api数据重复提交
php 怎样防止跨域提交表单,表单为ajax方式提交
常用方法:
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、重庆小程序开发公司、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了昌江免费建站欢迎大家使用!
①生成随机hash值,存储session,提交的时候要提交hash值,然后判断提交的hash是否正确;
②验证来路网页的域名,空域名或者不是自己的都返回错误。
php 禁止外部提交数据代码
这个原因是因为这个id是通过get获得了。
有一种解决方案就是,通过这个id获得这个id对应的用户数据,然后判断下这个用户数据是不是当前用户数据就可以了。
如果是就可以操作,不是就不可以操作,或如果是管理员就可以操作。
如何防止站外提交、恶意注册
以下是从“今朝办公多语言企业网站建设”网站抄来的,可能有效地解决下。没有试过,嘿嘿。我的小站还没有遇到过这种情况,先储备着
防止站外提交、恶意注册、恶意攻击 2010-11-26 浏览:1038/1026
网站在短时间内被莫名其妙的提交了大量和网站主题不相关的垃圾信息(卖发票的、假证的、治病的等等),而且你就眼睁睁的看着这些信息就那么大大方方的不断增加中,你删除的速度远不及添加的速度。
这就是典型的站外提交,信息提交绕开了你的正常程序操作,而是由一套程序来完成的。也就自然是你人工删除速度赶不上程序操作速度了。
相信很多站长都碰到了这些问题。有所不幸,我客户的一个网站(出于考虑,我就不公开其名称,大家私下交流我会提到)也碰到了这些问题;也是有所幸,在和这种恶意提交的交道过程中,也提高了自己的安全能力,提高了网站的安全性。
下面把我“交道”过程给大家分享,希望能够有所鉴悟:
一、网站刚建就出现了站外提交——垃圾信息如涓涓细流
估计是这时网站PR值还低,访问量小,那些垃圾信息每天也就是100-200条,有时仅10来条,而且提交时间也没有规律,估计是黑客爱好者“调试自己能力”所为。
我赶紧百度搜索,原来是提交后的数据处理页面没有任何的防范措施,我自己随便编写了个包含那些表单内容的网页,在本机、绕开网站提交页面直接指向数据处理页面就可以提交数据。
经查,需要在数据处理页面加入来源判断,如果是来自本站提交的页面的,就通过;也就是大家比较熟悉的这段代码:
%
server_v1=Cstr(Request.ServerVariables( "HTTP_REFERER "))
server_v2=Cstr(Request.ServerVariables( "SERVER_NAME "))
if mid(server_v1,8,len(server_v2)) server_v2 then
response.write " br br center table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450 "
response.write " tr td style= 'font:9pt Verdana ' "
response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数! "
response.write " /td /tr /table /center "
response.end
end if
%
加上后果然奏效,在半年多时间里没有垃圾信息了。
二、垃圾信息如滚滚洪流,扑天而来
1、过程一
在网站安静段时间后,这天我突然在后台看到数千条的垃圾信息,赶快删除;然而这边删除10条,那边已经添加了20多条,眼见得垃圾信息刷刷的增加,而且每条信息间隔也就1秒,甚至还有同一时间多条信息(我采用的是%=now()%时间格式),网站还多次出现“无法显示网页、目前访问网站的用户过多”。
真是一头雾水,头都大了,赶紧备份数据库,然后删除了数据处理页面,这下好了,垃圾信息停止了,可是客户也不能提交了。
赶紧搜索原因,综合网站建议:
(1)加验证码
于是赶紧从网站下载了个图片验证程序加上。就是常见的采用session命令和img.asp、body.Fix随机产生数字方式
(2)修改数据处理页面文件名
就找到了以上两条,赶紧加上,哎,好了,客户可以提交,也没有垃圾信息了,总算松了口气。
2、过程二
可是当天晚上准备休息时,突然想到那垃圾信息。于是进入后台一看,天呀,我上午9点多不是已经能够避免垃圾信息了吗?可是从下午4点开始,垃圾信息又汹涌而来。
这时困意全无,我也横下心来,必须解决此问题。于是我就让他继续提交,但是在数据处理页面加了个访问统计代码。过段时间一看,来源IP各地都有,莫非这就是网上大名鼎鼎的伪造IP。
赶紧搜索,可是网上也没有什么好办法了。我只好自寻办法:
(1)针对短时间内那么多信息,我增加了提交页面和数据处理页面的间隔时间为5秒,小于5秒,不能提交。
这段代码加上后果然奏效,垃圾信息间隔为5秒了,数量少了很多,很明显。这个提交垃圾信息的程序相当高明,他是提交页面(或是不读,仅有提交网页的数据处理)、数据处理页面、图片验证页面一块提交,完全模仿人的操作。估计此老兄或很多个老兄也睡觉了,只是电脑还开着,替他工作中。
(2)再加入一个验证
我在提交页面加了个时间验证表单,采用%=now%,必须输入现在时间才能提交。
代码加上后,果然奏效:垃圾信息停了。不过我也不能确定明天是不是还会出现垃圾信息,不过我确定肯定还会有的,一旦对方发现表单改变,人家一改,不是还照样吗?
3、过程三
第二天,上午平安无事,中午下班看时还是正常。可是下午一上班,天呀,又来了!!
这下真的无能为力了,莫非也就象一些论坛似的加入邮箱验证功能、回答问题验证功能。
我突然想到了,这些访问者是怎么来的呢?赶紧打开访问统计和访问日志,竟然发现了在我改变程序后,有那么一个显眼的IP访问:他把我域名收藏到他本机的一个“PR值高网址”文件夹,并从这个文件夹直接访问我站;还有从某个网站(这个网站大家估计都听说过)的后台,直接访问我的网站。
我顿时恍然大悟,如此高手,采用哪些通用方法岂能奏效,人家是“站外提交高手”。
你靠卖软件吃饭,但也别砸了我的饭碗呀。气愤之余,在网页上加上了恶意代码,只要提交和数据处理间隔时间小于2秒(客户填写一个提交页面无论如何也不会小于2秒的),我就给他发送恶意代码,关闭它的浏览器、无限制打开页面。如此本意,可是代码放上去后,我自己试了试,果然管用,估计对方计算机死翘翘了。虽然于事无补,总算出了口气。
网站我也不管了,慢慢寻找思路。可是晚上登陆一看,网站死了;不仅仅是这个网站不能打开,就是相同IP下的其他网站也都死了(我使用的是虚拟主机,同一IP下有我和客户的好几个网站)。可是主机提供商下班了,电话联系值班员也是说,要明天处理。
没办法,只能明天了。
不知道是服务器故障,还是对方采用了什么措施反制?
我彻底服了,赶紧把恶意代码撤下,提交和数据处理间隔时间60秒,换上友好语言“谢谢关注本站!我站财力微小,大家都是混饭吃,请多多体谅,请勿采用此方式访问”,期望明天服务器好了或者是自己突然好了后,人家手下留情。
4、过程四
第二天,服务器恢复了正常。可是对于我的友好请求,人家不理不睬,垃圾信息每隔1分钟照样来。
没办法了,人家也是吃这口饭的,为了让网站能正常浏览,我只好把数据处理页面也删除了,客户也不能提交了,提交页面换成“本站程序升级中,请稍后提交”。
网站肯定有漏洞,就是验证,可是问题是如何避免呢?
5、过程五
用网上下载的或通用的代码肯定是不行了。
几个技术人员思考好几天,加上了各种各样的表单验证,都不行。
最后,还是自己编写了验证代码,仅仅是50字节,放上去,好了!在以后的很长时间里,再也没有出现过这种情况。
这里就不公开这段代码了,如果你感兴趣,可以直接咨询本站。
如果你只是对其感兴趣并无自己网站运行,请勿联系。
以上把过程写出来,就是给同行提供一个问题解决的思路,只要自己用心且有一定的ASP或PHP能力,也一样能够解决的。
分享标题:php防止站外提交数据 php怎样阻止api数据重复提交
标题链接:http://scyanting.com/article/dopggch.html