当前位置:文档之家› web安全性测试

web安全性测试

WEB 安全性测试第一章:预备知识:1.1 SQL 语句基础1.2 HTML语言HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。

html 是在 sgml 定义下的一个描述性语言,或可说 html 是 sgml 的一个应用程式,html 不是程式语言,它只是标示语言。

实例:<html><body><form action="MAILTO:" method="post" enctype="text/plain"> <h3>这个表单会把电子发送到 W3School。

</h3>:<br /><input type="text" name="name" value="yourname" size="20"><br />电邮:<br /><input type="text" name="mail" value="yourmail" size="20"><br />容:<br /><input type="text" name="comment" value="yourcomment" size="40"><br /><br /><input type="submit" value="发送"><input type="reset" value="重置"></form></body></html>表单提交中Get和Post方式的区别有5点1. get是从服务器上获取数据,post是向服务器传送数据。

2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单各个字段一一对应,在URL中可以看到。

post是通过HTTP post机制,将表单各个字段与其容放置在HTML HEADER一起传送到ACTION属性所指的URL地址。

用户看不到这个过程。

3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

4. get传送的数据量较小,不能大于2KB。

post传送的数据量较大,一般被默认为不受限制。

但理论上,IIS4中最大量为80KB,IIS5中为100KB。

1.3 HTTP 协议HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据。

HTTP协议采用了请求/响应模型。

客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和容的类似于MIME的消息结构。

服务器以一个状态行作为响应,相应的容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体容。

HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。

请求方法常用的有GET、HEAD、POST。

每种方法规定了客户与服务器联系的类型不同。

由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。

正在传输的类型由Content-Type 加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。

服务器处理完客户的请求,并收到客户的应答后,即断开连接。

采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。

无状态是指协议对于事务处理没有记忆能力。

缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

6.基于TCP传输1.4 Cookie和Session1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。

2.session(会话)其实指的就是访问者从到达某个特定主页到离开为止的那段时间。

Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。

注:为这个用户创建的Cookie的名称是aspsessionid。

这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。

3.cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。

4.cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。

简单的说,当你登录一个的时候,1.5 常见WEB安全漏洞1.SQL Injection(SQL注入)2.Cross-site scritping(XSS):(跨站点脚本攻击)3.Email Header Injection(标头注入)4.Directory Traversal(目录遍历)5.exposed error messages(错误信息)第二章:SQL Injection(SQL注入)古老安全性漏洞2.1 什么是SQL注入所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.2.2 如何进行SQL注入1 首先找到带有参数传递的URL页面,如搜索页面,登录页面,提交评论页面等等.对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在<FORM> 和</FORM>的标签中间的每一个参数传递都有可能被利用.<form id="form_search" action="/search/" method="get"><div><input type="text" name="q" id="search_q" value="" /><input name="search" type="image" src="/media/images/site/search_btn.gif" /><a href="/search/" class="fl">Gamefinder</a></div></form>当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=102 其次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN /INDEX.ASP?USERNAME=HI' OR 1=1—注1:根据实际情况,SQL注入请求可以使用以下语句:' or 1=1- -" or 1=1- -or 1=1- -' or 'a'='a" or "a"="a') or ('a'='aSelect * from user where username=’ ' or 1=1’ and password=’’;注2:为什么是OR,以及',――是特殊的字符呢?例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password'如输入duck/index.asp?username=admin' or 1='1&pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11'' 与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行.接下来是OR查询条件,OR是一个逻辑运算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是说我们绕过了密码验证,我们只用用户名就可以登录.如输入duck/index.asp?username=admin'--&pwd=11,SQL语句会变成以下sql=select * from user where name='admin' --' and pasword='11','与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行接下来是"--"查询条件,“--”是忽略或注释,上述通过连接符注释掉后面的密码验证(注:对ACCESS数据库无效).最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息;如果能说明存在SQL安全漏洞.试想,如果存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操作,这样造成的后果是非常严重的.第三章:XSS(跨站点脚本攻击)3.1 什么是CSSXSS又叫CSS (Cross Site Script) ,跨站脚本攻击。

相关主题