打印本文 打印本文 关闭窗口 关闭窗口
SQLSERVER2000一些内置存储过程用法和说明
作者:武汉SEO闵涛  文章来源:敏韬网  点击数13620  更新时间:2007/11/14 12:27:07  文章录入:mintao  责任编辑:mintao
sa 一定要有强固的密码,尤其是 SQL Server 7.0 以前的版本,在装机时预设 sa 没有密码,而一般管理者装完后也忘了或怕麻烦而不更改密码。
  • 利用 ADO Command 对象或 ADO.NET SqlCommand class 来透过参数执行 SQL 语法,直接以 ADODB Connection 对象执行预存程序的写法一样糟糕。范例如下:
  • Exec spXXX 参数,

    因为骇客所加入的 SQL 语法一样可以执行:

    Exec spXXX 参数,;SHUTDOWN

    我们可以建立一个预存程序程序代码列表 5

    ECREATE PROC spUserAccount
    @UserName NVarchar(50),@Password NVarchar(50)
    AS
    SELECT UserName,Password FROM tblUser
    WHERE UserName=@UserName AND Password=@Password

    程序代码列表 5:用来找寻符合的使用者帐号密码的预存程序。

    同时将整个 ASP 的查询换成如程序代码列表 6 的写法:

    <%
    If Request("UserName")<>"" And Request("Pass")<>"" Then
    Dim cnn,rec,strSQL,cmd
    Set cnn=Server.CreateObject("ADODB.Connection")
    With cnn
    .ConnectionString=Application("Conn")
    .Open
    End With
    ''''
    透过 ADODB.Command 对象来搭配预存程序,骇客就无法

    ''''
    利用组合 SQL 字符串的方式来侵入系统
    Set cmd=Server.CreateObject("ADODB.Command")
    With cmd
    .ActiveConnection = cnn
    .CommandText = "spUserAccount"
    .CommandType = 4 ''''adCmdStoredProc
    .Parameters.Append .CreateParameter("UserName", 202, 1, 50, Request("UserName"))
    ''''202
    代表 adVarWChar1 代表 adParamInput
    .Parameters.Append .CreateParameter("Password", 202, 1, 50, Request("Pass"))
    Set rec = .Execute()
    End With
    If NOT rec.EOF Then
    Session("UserName")=Request("UserName")
    Response.Write "

     << 上一页  [11] [12] [13] [14] [15] [16] [17]  下一页

    打印本文 打印本文 关闭窗口 关闭窗口