如何防止站外提交数据

如何防止站外提交数据?从理论上说是没有绝对可行的办法。如果你要找绝对可行的办法。请跳过此文,此文只是提高站外提交的难度。

一、为什么要防止站外提交数据?

1、有的人为了减轻对服务器的压力,把对用户输入的数据的有效性判断放在了JS里,而从站外提交时,数据没有进行有效性判断。(其实这种方法很笨。)

2、防止机器人提交数据。比如,批量用户注册。批量发帖。

3、安全性。

二、防止站外提交的方法

本文来自李生平的博客。本文网址:http://www.lishengping.com/archives/46

1、判断HTTP中的Referer。Referer记录了来源页的网址。判读来源页的域名即可知道是否站外提交。(破解方法:伪造Referer)

2、Session法。当用户进入网站的时候设置一Session,当用户提交数据时在判断这个Session。但问题是,为了标识用户是哪个Session,服务器回向浏览器写入一个标识的Cookie。(破解方法:访问一个表单页,记录Cookie,当提交的时候把Cookie也提交)

3、设置强大的Hash。当打开表单页时,给表单生成一个Hash,当提交是判断这个Hash。(破解方法:正则匹配Hash,提交时将Hash一起提交)

4、验证码。在表单中设置验证码。如果验证码不够强大,可以被程序识别。如果验证码强大,可以提交数据之前人工识别。(破解方法:虽然还是要人工录入验证码。但已经和在网页里提交数据相比,要省事多了)

三、以上防止站外提交数据的方法的通用破解方法。

一般网站是使用HTTP协议。那么只要伪造一个和原来HTTP请求相似的HTTP请求就可了。

四、增加站外提交数据的难度。

通常站外提交数据的方法有2种:1、外站的FORM。2、非浏览器进行POST数据。

第一种方法局限性很大,比如不可以伪造HTTP头信息。很容易就得到了防止。

第二种方法可以伪造HTTP请求。如果是高手破解防站外提交数据,几乎是没办法防止站外提交数据的。

通常情况下,非浏览器提交数据都是不会去下载JS、图片、CSS文件。也就是说,当用户打开表单页。浏览器会下载当前页的图片、JS、CSS文件。而非浏览器却只下载HTML文件。也就是说,当下载HTML是设置一个SESSION,当下载HTML所包含的JS或其他类型文件时改变这个SESSION的值。当提交数据时判断这个SESSION是否改变值。这种方法不会让HTTP请求发生改变。因此破解者很难发现防止站外提交数据的方法和其他文件有关。让破解者琢磨不透。

这个SESSION的值可以是整数。下载一个文件加1,假如这个FORM所在页有2个CSS文件,4个JS文件,7个图片,那么可以判断这个SESSION的值应该大于几(例:8)。

这只是增加外站提交数据难度的一个方法。非一定能防站外提价数据。

展开阅读全文

没有更多推荐了,返回首页