1.什么是SQL注入
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態SQL命令,或作為存儲過程的輸入參數,這類表單特別容易受到SQL注入式攻擊。
2.怎么進行SQL注入
關于怎么進行SQL注入,網上已經有很多文章詳細介紹過了,可以參考博友滴答的雨的博文 《SQL注入攻防入門詳解》,親測有效。當執行完文中的5、6、7三步的時候,你會發現服務器上的安全保護措施都已是浮云,服務器也因此變成了名副其實的“肉機”。下面附上一張我在本機執行完文中描述的腳本后的效果截圖(Win8 x64 操作系統):
186:
}
過濾類是在某前輩的作品基礎上改的,很抱歉我已經找不到最原始的出處了。需要在Web.Config中添加防SQL注入的特征字符集:
復制代碼 代碼如下:
<!--防SQL注入時的特征字符集-->
<add key="SqlKeyWord" value="select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec|master|net local group administrators|net user|or|and"/>
<add key="SqlRegex" value=";|(|)|[|]|{|}|%|@|*|'|!"/>
使用方法很簡單,在站點的Global文件中,添加 Application_BeginRequest 事件即可:
復制代碼 代碼如下:
protected void Application_BeginRequest(object sender, EventArgs e)
{
//防SQL注入代碼
SqlInject myCheck = new SqlInject(this.Request);
myCheck.CheckSqlInject();
}
ASP.NET SQL 注入免費解決方案
任何一種使用數據庫web程序(當然,也包括桌面程序)都有被SQL注入的風險。防止被SQL注入,最基本的方法是在代碼級別就要阻止這種可能,這個網上講的很多,我就不多說了。不過如果你拿到的是一個已經完工的產品,這個時候該如何解決呢?我介紹幾種對于ASP和ASP.NET有效的防止SQL注入的方案,而且是免費的。
UrlScan 3.1
UrlScan 3.1是一個安全方面的工具,微軟官方的東西。它會檢查所有IIS處理的HTTP請求。UrlScan 可以在有安全問題的HTTP請求到達應用程序之前就阻止這個請求。UrlScan 3.1 是UrlScan 2.5的一個升級版本,支持Windows Vista 和Windows Server 2008系統之上的IIS 5.1, IIS 6.0 和 IIS 7.0。
鏈接地址: 這里還有很多非常有用的IIS擴展,可以看看。
IIS 6 SQL Injection Sanitation ISAPI Wildcard
這個ISAPI dll 也是通過檢查HTTP請求避免SQL注入。只兼容windows 2003上的 IIS 6.0。對于Windows XP 上的 IIS 5 不支持。