


讓ASP自動防護腳本注入
SQL Injection可以說是當前網(wǎng)絡(luò)環(huán)境中的主流攻擊手段之一,如何有效防止腳本注入一直困擾著廣大程序設(shè)計者。在程序設(shè)計中,往往一個小的疏忽,就可能導致系統(tǒng)被注入,甚至帶來嚴重的后果。對于腳本注入,總結(jié)起來,有以下兩種情況:
過濾策略考慮不周。比如說程序中只過濾了單引號,其實上我們可以饒過單引號繼續(xù)注入;
過濾變量不全。由于過濾策略只針對具體的單一的變量,往往會漏掉對某些變量的過濾。
本文就是針對上述問題而提出的一種通用的解決方案。
相關(guān)知識
在ASP程序數(shù)據(jù)傳遞中, 客戶端(Browser)向服務器提交請求有三種方法:Head、Get和Post。通過Header方法,服務器只向客戶端返回網(wǎng)頁的頭信息,而不是數(shù)據(jù)本身。實際上,數(shù)據(jù)傳遞只通過了GET和 POST這兩種方法,即在Form表單中Method屬性值(缺省為GET)。
假如使用“GET”屬性,瀏覽器將該值綁定在頁面所有控件上,成為一個查詢字符串,且附在被請求頁面的URL上(經(jīng)過URL編碼)。當這個請求到達Web服務器時,其值由ASP的Request.QueryString集合提供。假如設(shè)置METHOD屬性為“POST”,瀏覽器將值包裝進發(fā)送服務器的HTTP報頭中,通過Request.Form集合提供給ASP。
經(jīng)URL編碼的字符串長度存在一定的限制,其上限值為1024字節(jié)。因此,過長的字符串可能會引起溢出和字符被截掉。同時,查詢字符串出現(xiàn)在瀏覽器的地址欄和所有的保存的鏈接和收藏夾中。不僅如此,還顯露了通過Web服務器時在HTTP請求中不想顯示的值,它也可能出現(xiàn)你的服務器和其他路由服務器的日志文件中。而通過POST傳遞的數(shù)值(在HTTP請求報頭中的值)是不會出現(xiàn)在日志文件中的。
過濾原理
通過以上的介紹,我們已經(jīng)知道服務器獲取客戶端的數(shù)據(jù)是通過Request.QueryString集合(GET方法)和Request.Form集合(POST方法)來實現(xiàn)的。所以,如果我們在程序中檢查Request.QueryString集合和Request.Form集合的值,并過濾掉特殊字符,就達到了字符過濾的目的,而不必針對具體的變量編寫程序。實現(xiàn)方法如下:
If Request.Form”" Then
For Each Data In Request.Form
‘對Data應用過濾策略,當出現(xiàn)非法字符時執(zhí)行相應的處理程序
Next
End If
If Request.QueryString”" Then
For Each Data In Request.QueryString
‘對Data應用過濾策略,當出現(xiàn)非法字符時執(zhí)行相應的處理程序
Next
End If
通用系統(tǒng)解決方案
由于SQL注入是發(fā)生在執(zhí)行SQL語句的時候,也就是說發(fā)生在對數(shù)據(jù)庫操作的頁面,所以我們在有數(shù)據(jù)庫操作的頁面將從客戶端傳遞來的數(shù)據(jù)進行過濾,就可以全面防止SQL注入。因此,只需在數(shù)據(jù)庫連接的文件(如:conn.asp)應用過濾策略,就可以達到全面過濾的目的。在實際應用中,我們將過濾策略文件包含到數(shù)據(jù)庫連接的文件中即可。
在實際應用中,我們可以過濾策略(非法字符)存放在數(shù)據(jù)庫中,實現(xiàn)過濾策略的靈活管理。同時,我們可以針對特定的過濾策略,指定相應的處理過程:當出現(xiàn)非法字符時,是停止程序運行還是后臺記錄,或者是將程序?qū)蝈e誤提示頁面;對于后臺記錄數(shù)據(jù),管理員可以查看系統(tǒng)日志,并根據(jù)實際情況對訪問IP進行封鎖;對于IP封鎖,我們也可以制定相應的策略,對撥號帳號實行臨時封鎖,如12小時,對固定IP實行長期封鎖等等。
關(guān)健詞:ASP,自動防腳本
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解