摘要:
禁止外部提交数据:关于禁止外部提交数据,网络上有一些方法,不外乎以下几种方法:就是使用服务器变量http_referer还有server_name两个变量进行比较;在提交数据的页面增加一个参数,通常就是一个随机数;在保存数据的时候进行标题或者内容的检验关键字:
禁止 外部提交数据 正文:
关于禁止外部提交数据,网络上有一些方法,不外乎以下几种方法:
1.就是使用服务器变量http_referer还有server_name两个变量进行比较,很多人认为这样做是安全的,事实并不是这样,referer这个变量是由客户端浏览器提交给服务器的,并不可靠,有很多方法可以伪造这个参数,从而使通过这种方法禁止外部提交数据的方法失效.
代码如下:
<%
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 "警告!禁止外部提交数据!"
Response.Redirect "index.asp"
end if
%>
2.在提交数据的页面增加一个参数,通常就是一个随机数,当保存帖子的时候验证这个参数是否正确.可能很多人以为这样比较安全了.但实际上如果要实现验证,必须在数据提交的页面显示出这个随机变量,比如,虽然是隐含表单,但是仍然可以用程序轻松分析出这个参数,然后利用程序去提交.这一点很容易作到.--不过好象还没见到现成的工具哈
3.在保存数据的时候进行标题或者内容的检验,如过发现该ip或用户在短时间内发了相同内容(或相似内容)以及标题的,就丢弃数据,给出提示.不过这种一个是比较占用资源,这一点很好理解吧?每次保存数据都要进行检验.另外就是也并不见得安全.利用工具可以随机生成一些内容去发送,就可以绕过了,这也是比较容易的.
4.类似上面的方法2,不过使用图片验证码.由用户自行输入这个参数,这一点在目前看来应该是最安全的了,虽然有图片识别引擎,但是目前能够提交数据的工具均未发现有此功能的.因此至少在目前来说比较安全.