發表文章

目前顯示的是 八月, 2012的文章

資安JAVA(三五): 一次解決一個問題

圖片
來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 35 – SOLVE SECURITY PROBLEMS ONE AT A TIME
作者:John Melton

What is it and why should I care?

本篇文章與技術沒有太大關係,主要是討論解決資安問題的流程。

真實生活中的資安廠商通常跟消防員一樣。一通電話"救命阿,我們的網站被駭了,快幫我們修好!"是一天中最平凡的開場白。我們常常忙於亡羊補牢,而沒有解決問題來源,也沒有減少弱點被人利用的機會。

所以,問題持續存在。

要根本解決Web的安全問題,我們不能等到事情發生才關心。我們必須要提早想到可能的問題,並提出解決方案。building security in 網站教你從開發階段就該注意的事情,bsimm.com 則收集了許多知名軟體公司對於安全所做的努力。

然而,我們常犯了想要同時解決所有看起來都很嚴重問題的毛病。卻忘了風險優先順序。只有讓所有相關人員來開會,詳細說明安全問題,才能釐清問題順序。

假設以下兩種跟效能( performance )有關的情境。
1. 當你有一個跑得很慢卻又常常被執行的函式。有天你看不下去了,直接改寫成更有效率的版本,並取代舊版本。系統效能立即提升,減少浪費的時間。

2.當你有個跑得很慢的跨應用程式查詢句。你可以升級資料庫的硬體、更換資料庫供應商、增加應用程式的快取空間、最佳化查詢句等等。但是這些調整都牽涉到很多軟硬體的設定,你需要計畫,不能說改就改。

某些資安的問題也是一樣,有些問題可以像1.的情境,直接修改。有些問題(sql injection、xss)則像2.,需要妥善的計畫。


資安JAVA(三四): 分離管理者功能

圖片
來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 34 – SEPARATE ADMIN FUNCTIONALITY
作者:John Melton
What is it and why should I care?

或許有人會認為將管理者功能從系統中切出來很奇怪。但作者定義的管理者功能是更高的權限(使用者、群組、角色的管理),因為非法提權(privilege escalation)會對應用程式產生很大的影響。作者對於管理功能的想法是:
擁有可以管理使用者的重要功能假設被人以不正方式利用,使用者的權限可以增加或被移除不管任何狀況,作者並不相信可以完美的保護這些功能 你可能不同意作者,尤其是第三點,你也許覺得自己的應用程式超安全。作者的經驗中,大部分應用程式本身都有設計上的漏洞,如果管理者功能被有心人利用,那被公布的系統弱點造成的影響就更大了。

資安JAVA(三三): Access Control (3)

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 33 – ACCESS CONTROL (3)
作者:John Melton
What is it and why should I care?

前前一篇 已經提過 Access Control 的定義了。

What should I do about it?

part1 我們談到以功能性來限制使用者的行為、part2 我們將資料存取也列入考量。接下來,我們將討論更多普遍適用於限制使用者的因素。根據資料的不同類型我們可以增加某些情境資訊來限制使用者的行為。我將列出幾點常見的情境,由你來繼續列下去,並套用到你的應用程式環境中。

Date / Time
每天的某些時段可當作是否允許存取應用程式的重要條件。例如,你可以限定員工在星期一到星期五的AM 08:00-PM 18:00 才能進入系統。上班時段以外,員工只能有少許的使用權限。另外一種方式是,限制每24小時只有6小時能執行特殊工作,減少資料被竄改的機會。

資安JAVA(三二): Access Control (2)

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 32 – ACCESS CONTROL (2)
作者:John Melton
What is it and why should I care?

上一篇已經提過 Access Control 的定義了。

What should I do about it?
前面提到我們可以用功能性來限制使用者的行為。第二種限制使用者行為的做法是,以資料區分─特定使用者只能存取特定資料。舉例:雖然所有登入網路銀行的使用者都能執行查詢餘額的功能,但只能顯示自己的數字。

資安JAVA(三一): Access Control (1)

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 31 – ACCESS CONTROL (1)
作者:John Melton
What is it and why should I care?

存取控制(Access control),又稱做使用者授權(Authorization),是身分鑑別成功之後的下一步驟。存取控制的流程是以使用者身分為基礎決定資源的存取權限。假設使用者身分已經被確認,之後才能決定是否讓使用者存取特定資源。

存取控制是系統中最容易被利用的,通常存取控制的實作都存在一些問題,控制點沒有完全覆蓋應用程式,留下許多漏洞形成資安隱憂。

存取控制的問題可以用不同的存取控制模型 MAC、DAC、RBAC 來解決。然而,Web應用程式有一些特別的地方,接下來我將介紹不同之處在哪。