昔日

xss公开教学[第五课]搜索框的利用

豪子′Blog|关注网络安全,关注黑阔动态:

我们今天学习数据库


ADO的概念


ADO(ActiveX Data Object)是一种可以提供Web页面于数据库结合的最新的数据库技术


ADO对象模型包括7个对象和3个集合。


Connection(连接对象):用来建立数据源和ADO程序之间的连接。


Command(命令对象):用来嵌入SQL查询,包括对存储过程的调用。


Parameter(参数对象):用来传递参数给SQL查询,在使用存储过程时用到。


Recordset(记录集对象):用来浏览及操作实际数据库内的数据,者是十分重要的一个对象。


Field(字段对象): 用来取得一个记录集(Recordset)内不同字段的值。


Error(错误对象):用来返回一个数据库连接上的错误。


Property(属性对象):指明一个ADO对象的属性。


.这里只将我们常用的,其他的我们就不讲了


Connection


Asp使用ADO对各种数据源进行各种操作,其中,Connection对象是必不可少的,


Connection对象代表了打开的,与数据源的连接,该对象与数据库进行的唯一会话。


常用的方法


Open:建立一个与数据源的连接对象。


Close:关闭与数据库的连接,并且释放与连接有关的系统资源。


Execute:执行SQL命令或存储过程,以实现与数据库的通讯。


创建数据库连接


创建Connection 对象实例


与使用其他ASP组件一样,在使用ADO Connection对象前,应使用Server.CreateObject方法创建该对象的实例语法格式:


<%


Dim cnn


Set cnn=Server.CreateObject(“ADODB.Connection”)


%>


打开数据库连接


使用Connection对象的Open方法可以建立到数据库的物理连接


关闭数据库


关闭与数据库的连接,并且释放与连接有关的系统资源。其语法格式为:


Connection。Close


Recordset对象


利用Recordset对象的属性和方法可以完全操作一个数据库,


我们有必要了解一下常用的属性以及方法


Bof


判断记录指针是否到了第一条记录之前


Eof


判断记录指针是否到了最后一条记录之后


PageSize


表示 RecordSet对象中当前记录的顺序位置是第几行记录


PageCount


表示当前记录的页号


使用SELECT实现查询与统计


SELECT主要用于查询数据,也可以用来向局部变量赋值或者调用一个函数。


常用的SELECT的格式为:


SELECT 要查询的那些列名,列名之间用逗号间隔


FORM; 要查询的那些列名来自哪些表,表名之间用逗号间隔。


WHERE:要查询的条件


LIKE的使用


查询给定的有些字符相匹配的那些数据行,这些字符只是列值的一部分。这样的查询不要求于列值完全相同,将其称为模糊查询。


代码分析


我拿到了其中关键的代码


<form name="form1" method="get" action="search.asp">


                <tr bgcolor=#ffffff> 


                    <td height=22 align="center"> 


                      <input name="keyword">


                      <select name="lei">


                        <option value="0">软件名称</option>


                        <option value="1">软件简介</option>


                      </select>


                      <input type="submit" value=" 搜索 ">


                    </td>


                </tr></form>


从上面可以看出把搜索的字符串送到search.asp


是以get方式提交的


我们就顺便到search.asp中去看看


片段一


dim rs,sql,keyword


keyword=trim(request("keyword"))


keyword=replace(keyword,"'","''")


if keyword = "" then


   response.write"<center>搜索关键字不能为空!<a href=""javascript:history.go(-1)"">返回重查</a></center>"


   response.end


end if


 


片段二


set rs=server.CreateObject("ADODB.RecordSet") 


if int(lei)=0 then


sql="select * from learning,type where learning.typeid=type.typeid and title Like '%"& keyword &"%' order by dateandtime desc"


 


片段三


<table width="98%" align="center">


          <tr> 


            <td>您查询的关键字为: <font color="#FF0000"><%=keyword%></font> </td>


            <td align="right">共找到 <%=TotalCount%> 个软件&nbsp;分为 <%=TotalPages%> 


              页&nbsp;每页 <%=PAGESIZE%> 个软件</td>


          </tr>


        </table>


 


好了我们现在来说说思路:


当我们输入字符串的时候,程序用request来接受,只是过滤了空格以及引号,这些并不影响我们的跨站代码


接着程序吧我们输入的字符串放入数据库进行模糊查找


在给我们的查找字符串输出来


这样就实现了跨站


 



评论

热度(1)

  1. 昔日豪子′Blog|关注网络安全,关注黑阔动态 转载了此文字