如何防止站外提交数据

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

1、为何要防止站外提交数据?

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

二、防止机器人提交数据。好比,批量用户注册。批量发帖。服务器

三、安全性。ide

2、防止站外提交的方法

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

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

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

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

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

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

通常网站是使用HTTP协议。那么只要伪造一个和原来HTTP请求类似的HTTP请求就可了。域名

4、增长站外提交数据的难度。

一般站外提交数据的方法有2种:一、外站的FORM。二、非浏览器进行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)。

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

相关文章
相关标签/搜索