顯示具有 security 標籤的文章。 顯示所有文章
顯示具有 security 標籤的文章。 顯示所有文章

2012年6月1日

Security 項目

管理權限

用戶驗證

TIPS-SqlConnection的ConnectionString保密機制
http://blog.darkthread.net/post-2008-03-13-persist-security-info-in-connectionstring.aspx 

不要使用GET方式接收指令進行資料更新
http://blog.darkthread.net/post-2009-04-16-dont-use-get-ajax.aspx 

伺服器端驗證
http://blog.darkthread.net/post-2011-01-28-serverside-validation.aspx 






網頁安全事件列表
http://forum.icst.org.tw/phpbb/viewtopic.php?f=29&t=15921
Web, HTTPS(SSL) and XML Vulnerabilities
針對Web、HTTPS以及 XML的程式漏洞產生的攻擊


SQL Injection
SQL指令碼注入攻擊


Session Hijacking
Session劫持


Cross Site Scripting (XSS)
跨網站腳本攻擊(XSS)


Form Field Tampering
表單欄位字串竄改


Known Worms
已知蠕蟲


Zero Day Web Worms
Zero Day Web蠕蟲


Buffer Overflow
緩衝區溢位攻擊


Cookie Poisoning
在Cookie中下毒/竄改


Denial of Service
阻絕服務攻擊(DOS)


Malicious Robots
惡意機器人


Parameter Tampering
網頁程式參數竄改


Brute Force Login
暴力破解登入


Malicious Encoding
含惡意編碼的網頁


Web Server and Platform Attacks
Web服務軟體與作業系統弱點/漏洞攻擊


Directory Traversal
目錄遍歷漏洞、資訊泄露漏洞、非授權文件包含漏洞


Site Recon
網站掃描


OS Command Injection
系統指令碼注入攻擊


Cross Site Request Forgery(CSRF)
跨網站偽造請求,會將使用者導至偽造的網站(CSRF)


Google Hacking


Remote File Inclusion Attacks
遠端夾檔攻擊


Illegal Encoding
非法編碼


Credit Card Exposure
信用卡卡號外漏


Patient Data Disclosure
病患個人資料洩漏


Corporate Espionage
企業間諜


Phishing
釣魚式攻擊


Data Destruction
資料破壞

2012年5月31日

Security 資訊安全 2. Cross-Site-Scripting (XSS)

在留言或論壇文章等文字內容中,輸入了夾帶 javascript的文字,使得網頁在顯示內容時,順帶的執行其中的 javascript,進而對瀏覽此網頁的其他使用者造成影響。
沒有做 XSS防範措施的網頁,很容易因此就被掛上木馬等糟糕的內容。

所以,不能盡信使用者輸入的內容,最好在傳送前及顯示時,對使用者輸入的內容加做 html編碼解碼。

在 ASP .NET已經有功能強大的 Anti-XSS Library可以對付 XSS攻擊,目前最新的版本為 4.2版。


參考資料:
網站
 XSS(Cross Site Scripting)攻擊會讓您遺失Cookie中的資料
 [資訊安全]防範Cross-Site-Scripting(XSS)
PDF
 ASP.NET 防駭指南

2012年5月30日

Security 資訊安全 1. SQL Injection

SQL Injection是一種設計邏輯上的疏失造成的系統漏洞,不管用什麼程式語言、資料庫,都可能會中獎。
一個不小心,就足以讓整個系統門戶大開,赤裸裸的給人看光。

舉一個簡易的例子:
string selectCommand = 
@"SELECT UserName FROM UserAccount WHERE UserID='" + Request("UID") + "' AND UserPWD='" + Request("PWD") + "'";

如果輸入 UID為 ' or 1=1 --
這樣上方例子中的 SQL指令變成:
SELECT UserName FROM UserAccount WHERE UserID='' or 1=1 -- ' AND UserPWD=''";
就可以直接登入

如果管理者帳號為 admin,輸入 UID為 admin'--
SELECT UserName FROM UserAccount WHERE UserID='admin'-- ' AND UserPWD=''";

瞬間就可以以管理員權限登入,想做什麼就做什麼!!

再衍生下去則可以利用錯誤訊息獲得管理者權,停掉資料庫、刪除資料或卸除資料庫等,甚至取得伺服器主機管理權限等,不可不防。


另外,辛辛苦苦完成的網站上線後,若沒有做自訂錯誤頁面,直接暴露出所有 error、exception訊息,則使用者也可以利用錯誤訊息,摸透資料庫的內容,接著幹出一堆很邪惡很邪惡的事。
(詳細步驟可看 SQL Injection (資料隱碼)– 駭客的 SQL填空遊戲(上))


重點!!
1. 過濾使用者輸入的資料。
2. 不要直接以字串串接組合出 SQL指令。
3. 不要把錯誤訊息顯示給使用者。


解決方式:
ASP .NET
  • 使用 Command物件或 SqlCommand類別,透過參數執行 SQL 語法。
  • 正式環境中,將 web.config內的 customErrors設為 "On"。
  • 在伺服器端檢查與限制輸入變數的型別與長度,過濾掉不需要的內容,不要完全信任使用者輸入的內容。
  • 登入 SQL Server的帳號不使用 sa或任何屬於 Sysadmin群組的帳號,避免有過大的權限。


參考資料:
網站
    SQL Injection (資料隱碼)– 駭客的 SQL填空遊戲(上) (下)
    『資料隱碼』SQL Injection的源由與防範之道
    SQL Injection 緊急應變建議
PDF
    ASP .NET 防駭指南
    你的網站在裸奔嗎? 一個SQL Injection實例的啟示

2012年5月28日

SQL Injection

今天在跟組長做面試練習時,組長問了怎麼防止 SQL Injection

我直接回答:不知道什麼是 SQL Injection

所以 組長 就簡單的解釋了一下 SQL Injection的做法

我頓時:哦 ~

然後在面試練習結束後,上網查了一下 SQL Injection
看到黑暗執行緒的 你的網站正在裸奔嗎? (裡面有個 pdf連結,下載來看)
才更清楚的了解了 SQL Injection的嚴重性

還好當初專案開發時就有被告知盡量不要用字串串接做 SQL查詢句