在ASP中過濾使用者輸入 提高安全性

來源:互聯網
上載者:User
安全|安全性|安全|安全性 安全對於所有應用程式來說都是十分重要的。一個簡單應用程式裡的某個失誤都會造成對資料庫或者其他企業資源未經授權的訪問,因此安全尤其重要。一種常用的攻擊方法是將命令嵌入到使用者的回應裡,而從使用者輸入裡過濾掉這些非法的字元就能夠防止這種攻擊。


允許使用者輸入非法的字元會增加使用者導致問題的機會。例如,很多應用程式都能夠接受使用者在SQL命令裡增加的WHERE子句。惡意使用者會通過向其輸入的資訊裡增加額外命令的方法,來執行資料庫伺服器上的代碼。例如,他們不是輸入“Smith”,將其作為檢索字串,而是輸入“Smith'; EXEC master..xp_cmdshell 'dir *.exe”。

下面這段代碼是設計用來處理從伺服器返回的多個Recordset的。使用者的輸入會包含一個額外的、未預料的的執行命令。當NextRecordset方法被調用的時候,潛藏的惡意代碼就會被執行。

這一攻擊可以通過過濾掉使用者輸入資訊中的非法字元(在注釋段裡)來避免。這樣做了之後,使用者的輸入仍然被允許處理,但是清除掉了所有的非法字元。

Dim rst As Recordset
Dim rst2 As Recordset
Dim strUserInput As String

strUserInput = "Smith';EXEC master..xp_cmdshell 'dir *.exe"

'Filter input for invalid characters
strUserInput = Replace(strUserInput, "<", vbNullString)
strUserInput = Replace(strUserInput, ">", vbNullString)
strUserInput = Replace(strUserInput, """", vbNullString)
strUserInput = Replace(strUserInput, "'", vbNullString)
strUserInput = Replace(strUserInput, "%", vbNullString)
strUserInput = Replace(strUserInput, ";", vbNullString)
strUserInput = Replace(strUserInput, "(", vbNullString)
strUserInput = Replace(strUserInput, ")", vbNullString)
strUserInput = Replace(strUserInput, "&", vbNullString)
strUserInput = Replace(strUserInput, "+", vbNullString)
strUserInput = Replace(strUserInput, "-", vbNullString)

Set rst = New Recordset
rst.ActiveConnection = "PROVIDER=SQLOLEDB;DATA SOURCE=SQLServer;" & _
                       "Initial Catalog=pubs;Integrated Security=SSPI"
rst.Open "Select * from authors where au_lname = '" & strUserInput & _
         "'", , adOpenStatic
'Do something with recordset 1

Set rst2 = rst.NextRecordset()
'Do something with recordset 2

在使用者的輸入中嵌入命令也是攻擊ASP Web應用程式的一種常見手法,也叫做跨網站指令碼攻擊。過濾輸入的內容並使用Server.HTMLEncode和Server.URLEncode這兩個方法會有助於防止你ASP應用程式裡這類問題的發生。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。