導航:首頁 > 凈水問答 > xss過濾標簽

xss過濾標簽

發布時間:2023-05-31 21:20:10

『壹』 如何防止xss攻擊,需要過濾什麼

XSS攻擊通常是指黑客通過"HTML注入"篡改了網頁,插入了惡意的腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。

一、HttpOnly防止劫取Cookie

HttpOnly最早由微軟提出,至今已經成為一個標准。瀏覽器將禁止頁面的Javascript訪問帶有HttpOnly屬性的Cookie。目前主流瀏覽器都支持,HttpOnly解決是XSS後的Cookie支持攻擊。

我們來看下網路有沒有使用。

未登錄時的Cookie信息
可以看到,所有Cookie都沒有設置HttpOnly,現在我登錄下

發現在個叫BDUSS的Cookie設置了HttpOnly。可以猜測此Cookie用於認證。

下面我用PHP來實現下:

<?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);

setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);
setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);
?>
<script>
alert(document.cookie);
</script>
js只能讀到沒有HttpOnly標識的Cookie

二、輸入檢查

輸入檢查一般是檢查用戶輸入的數據中是否包含一些特殊字元,如<、>、'、"等,如果發現存在特殊字元,則將這些字元過濾或者編碼。

例如網站注冊經常用戶名只允許字母和數字的組合,或者郵箱電話,我們會在前端用js進行檢查,但在伺服器端代碼必須再次檢查一次,因為客戶端的檢查很容易繞過。

網上有許多開源的「XSS Filter」的實現,但是它們應該選擇性的使用,因為它們對特殊字元的過濾可能並非數據的本意。比如一款php的lib_filter類:

$filter = new lib_filter();
echo $filter->go('1+1>1');
它輸出的是1,這大大歪曲了數據的語義,因此什麼情況應該對哪些字元進行過濾應該適情況而定。

三、輸出檢查

大多人都知道輸入需要做檢查,但卻忽略了輸出檢查。

1、在HTML標簽中輸出

如代碼:

<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=$b?></div>
<a href="#"><?=$a?></a>
這樣客戶端受到xss攻擊,解決方法就是對變數使用htmlEncode,php中的函數是htmlentities

<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=htmlentities($b)?></div>
<a href="#"><?=htmlentities($a)?></a>

2、在HTML屬性中輸出

<div id="div" name ="$var"></div>
這種情況防禦也是使用htmlEncode

在owasp-php中實現:

$immune_htmlattr = array(',', '.', '-', '_');
$this->htmlEntityCodec->encode($this->immune_htmlattr, "\"><script>123123;</script><\"");

3、在<script>標簽中輸出

如代碼:
<?php
$c = "1;alert(3)";
?>
<script type="text/javascript">
var c = <?=$c?>;
</script>
這樣xss又生效了。首先js變數輸出一定要在引號內,但是如果我$c = "\"abc;alert(123);//",你會發現放引號中都沒用,自帶的函數都不能很好的滿足。這時只能使用一個更加嚴格的JavascriptEncode函數來保證安全——除數字、字母外的所有字元,都使用十六進制"\xHH"的方式進行編碼。這里我採用開源的owasp-php方法來實現
$immune = array("");
echo $this->javascriptCodec->encode($immune, "\"abc;alert(123);//");
最後輸出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F

4、在事件中輸出

<a href="#" onclick="funcA('$var')" >test</a>
可能攻擊方法
<a href="#" onclick="funcA('');alter(/xss/;//')">test</a>
這個其實就是寫在<script>中,所以跟3防禦相同

5、在css中輸出

在owasp-php中實現:

$immune = array("");
$this->cssCodec->encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');
6、在地址中輸出

先確保變數是否是"http"開頭,然後再使用js的encodeURI或encodeURIComponent方法。

在owasp-php中實現:

$instance = ESAPI::getEncoder();
$instance->encodeForURL(『url』);
四、處理富文體

就像我寫這篇博客,我幾乎可以隨意輸入任意字元,插入圖片,插入代碼,還可以設置樣式。這個時要做的就是設置好白名單,嚴格控制標簽。能自定義 css件麻煩事,因此最好使用成熟的開源框架來檢查。php可以使用htmlpurify

五、防禦DOM Based XSS

DOM Based XSS是從javascript中輸出數據到HTML頁面里。

<script>
var x = "$var";
document.write("<a href='"+x+"'>test</a>");
</script>
按照三中輸出檢查用到的防禦方法,在x賦值時進行編碼,但是當document.write輸出數據到HTML時,瀏覽器重新渲染了頁面,會將x進行解碼,因此這么一來,相當於沒有編碼,而產生xss。
防禦方法:首先,還是應該做輸出防禦編碼的,但後面如果是輸出到事件或腳本,則要再做一次javascriptEncode編碼,如果是輸出到HTML內容或屬性,則要做一次HTMLEncode。

會觸發DOM Based XSS的地方有很多:

document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()

『貳』 最近網上流行的XSS是什麼意思

最近網上流行的XSS是小學生的惡稱,罵小學生的。

一是指某些人的想法、思維方式、對事物的認知和思考能力如孩子般幼稚、單純、天真。

二是特指某類相對於同齡的人,在游戲競技或者社交網路中, 態度傲慢、技術水準較差、拒絕與隊友溝通、獨斷專行、忽視團隊合作、甚至喜歡惡語相向的網遊玩家。

三是指對沒有接觸過社會或社會經驗不足。



(2)xss過濾標簽擴展閱讀:

1、小學生技術菜,愛罵人,玻璃心(說他一句就掛機送人頭,不管說什麼,比如:中路的你不要再送了,然後他就說「我就送」,接著就開始了。)小學生的心思就像星空,摸不著猜不透。

2、大噴子(網路中對喜歡肆意謾罵、地域黑、招黑、互黑等網友的一種廣泛性定義。),不分青紅皂白就開噴。

3、說話不經過大腦考慮,以自我為中心,可能是在家被寵慣了。

4、沒有接觸過社會大家庭或接觸社會經驗不足。比如:參加工作,你要是不讓新人上,永遠都是新人。這也是小學生。

『叄』 過濾了html標簽 怎麼進行xss滲透

ailure of dynasty Song Dy

『肆』 在xss中各種過濾的情況,在什麼地方可能存在注入點

XSS注入的本質就是:某網頁中根據用戶的輸入,不期待地生成了可執行的js代碼,並且js得到了瀏覽器的執行.意思是說,發給瀏覽器的字元串中,包含了一段非法的js代碼,而這段代碼跟用戶的輸入有關.常見的XSS注入防護,可以通過簡單的htmlspecialchars(轉義HTML特殊字元),strip_tags(清除HTML標簽)來解決,但是,還有一些隱蔽的XSS注入不能通過這兩個方法來解決,而且,有時業務需要不允許清除HTML標簽和特殊字元.下面列舉幾種隱蔽的XSS注入方法:IE6/7UTF7XSS漏洞攻擊隱蔽指數:5傷害指數:5這個漏洞非常隱蔽,因為它讓出現漏洞的網頁看起來只有英文字母(ASCII字元),並沒有非法字元,htmlspecialchars和strip_tags函數對這種攻擊沒有作用.不過,這個攻擊只對IE6/IE7起作用,從IE8起微軟已經修復了.你可以把下面這段代碼保存到一個文本文件中(前面不要有空格和換行),然後用IE6打開試試(沒有惡意代碼,只是一個演示):+/v8+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-最容易中招的就是JSONP的應用了,解決方法是把非字母和數字下劃線的字元全部過濾掉.還有一種方法是在網頁開始輸出空格或者換行,這樣,UTF7-XSS就不能起作用了.因為只對非常老版本的IE6/IE7造成傷害,對Firefox/Chrome沒有傷害,所以傷害指數只能給4顆星.參考資料:UTF7-XSS不正確地拼接JavaScript/JSON代碼段隱蔽指數:5傷害指數:5Web前端程序員經常在PHP代碼或者某些模板語言中,動態地生成一些JavaScript代碼片段,例如最常見的:vara='<!--?phpechohtmlspecialchars($name);?';不想,$name是通過用戶輸入的,當用戶輸入a』;alert(1);時,就形成了非法的JavaScript代碼,也就是XSS注入了.只需要把上面的代碼改成:vara=

『伍』 xss漏洞防禦方法

xss漏洞防禦方法有輸入過濾、純前端渲染、轉義HTML和標簽和屬性基於白名單過濾。

輸入過濾:有時候需要多次過濾,猛神汪例如<scrip<script>t>過濾掉<script>後還是<script>,需要注意多個過濾器的先後次序。當多個過濾器一起生效時,有可能後進行的過濾導致前面的過濾失效。

純前端渲染:在純前端渲染中,我們會明確的告訴瀏覽器:下面要設置的內容是文本(innerText),還是屬性(setAttribute),還是瞎信樣式(style)等等。瀏覽器不會被輕易的被欺騙,執行預期外的代碼了。

轉義HTML:如果拼接HTML是必要的,就需要採用合適的轉義庫,對HTML模板各處插入點進行充分的轉義。常用的模板引擎,如ejs、FreeMarker等,對於HTML轉義通常只有一個規則,就是把&、<、>、"、'、/這幾個字元轉義掉,確實能起到一定的XSS防護作用。枝仔

標簽和屬性基於白名單過濾:對於副文本編輯器來說,其產物本身就是html代碼,所以沒辦法簡單粗暴使用轉義來處理,應該要對內容中的標簽和屬性,基於白名單進行過濾(附XSS黑名單:DOM中的內聯事件監聽器如onclick等、<a>標簽的href屬性、<script>標簽、css中的url功能)。

xss攻擊的原理

HTML是一種超文本標記語言,通過將一些字元特殊地對待來區別文本和標記,例如,小於符號(<)被看作是HTML標簽的開始,<title>與</title>之間的字元是頁面的標題等等。

當動態頁面中插入的內容含有這些特殊字元(如<)時,用戶瀏覽器會將其誤認為是插入了HTML標簽,當這些HTML標簽引入了一段JavaScript腳本時,這些腳本程序就將會在用戶瀏覽器中執行。所以,當這些特殊字元不能被動態頁面檢查或檢查出現失誤時,就將會產生XSS漏洞。

『陸』 在input的標簽里怎麼繞過xss雙引號的編碼過濾

哥們,要是讓你繞過去了,黑客也就繞過去了。不要想著從前台騙過過濾器,如果系統設置非常嚴格,所有從前台設置的輸入信息都會被xss過濾器過濾,一般是把特殊字元刪除或者轉譯(比如大於號小於號雙引號斜杠等),避免用戶通過非法手段存儲注入代碼,但是一般的web系統,都不會在顯示的時候重新轉碼,所以,如果你可以直接訪問資料庫,則可以講特殊字元的代碼直接寫到資料庫里,頁面就會直接顯示了。

『柒』 【論跨站腳本(XSS)攻擊的危害、成因及防範】跨站腳本攻擊

1 引言 在Web 2.0出現以前,跨站腳本(XSS)攻擊不是雀大那麼引人注目,但是在Web 2.0出現以後,配合流行的AJAX技術,XSS的危害性達到了十分嚴重的地步。比如,世界上第一個跨站腳本蠕蟲發生在MySpace網站,20小時內就傳染了一百萬個用戶,最後導致該網站癱瘓。因此我認為,XSS是在腳本環境下的溢出漏洞,其危害性絕不亞於傳統的緩沖區溢出漏洞。

2 XSS攻擊的定義

跨站腳本英文名稱是(Cross Site Script),為了與層疊樣式表(Cascading Style Sheets)區分,故命名為XSS。
XSS攻者鍵擊是指入侵者在遠程WEB頁面的HTML代碼中插入具有惡意目的的數據,用戶認為該頁面是可信賴的,但是當瀏覽器下載該頁面時,嵌入其中的腳本將被解釋執行。

3 跨站腳本漏洞的成因

3.1XSS成因概括
XSS其實就是Html的注入問題,攻擊者的輸入沒有經過嚴格的控制進入了資料庫最
終顯示給來訪的用戶,導致可以在來訪用戶的瀏覽器里以瀏覽用戶的身份執行Html代碼,數據流程如下:攻擊者的Html輸入―>web程序―>進入資料庫―>web程序―>用頃嫌豎戶瀏覽器。
3.2常規跨站漏洞
我們來看一段接收評論的代碼:

可以看到,從客戶端輸入的所有變數沒有經過任何過濾就直接進入了資料庫。攻擊者可以在表單中輸入:,點擊提交後,那麼其他用戶在瀏覽該頁面時就會不知不覺打開一個預先掛有木馬的頁面https://www.省略/muma.html,如果沒打相應的補丁,就會中馬。當然XSS的攻擊方式還有很多,比如通過跨站將上傳的圖片備份直接得到WebShell、結合AJAX技術通過蠕蟲攻擊等,因為這不是本文的重點,在這里就不一一列舉了。
3.3 UBB跨站漏洞
在很多論壇里發帖時,點擊圖片模樣的按鈕,在編輯區域就會出現[IMG][/IMG]的字樣,這是採用了一種UBB編碼的方式,如果攻擊者輸入[IMG] javascript:alert(」XSS」) [/IMG],它會默認將其轉換為,通過這種方式誘發的跨站漏洞稱為UBB跨站漏洞。

4 防範方法

4.1針對常規跨站漏洞
在常規的跨站漏洞中,正是因為攻擊者可以不受限制地引入「>」,導致了他可以操縱一個html標記,從而誘發了XSS攻擊。因此首先就要過濾掉「>」:
Replace(str,」」,」>」)
4.2針對UBB跨站漏洞
UBB跨站漏洞的防範相對來說比較復雜,首先攻擊者必須引入javascript或vbscript代碼來達到攻擊的目的,所以首先要過濾中javascript後面的冒號,將其用中文的冒號替代:
Replace(str,」:」,」:」)
但是HTML支持&#ASCII這樣的編碼,攻擊者又可以通過重新達到目的(58是冒號的十進制ASCII碼),所以必須過濾&符號:
Replace(str,」&」,」&」)
以上雖然已經過濾了來自標簽屬性的威脅,攻擊者還是可以通過觸發一個錯誤事件來達到目的。所以還需過濾掉以下字元:
Replace(str,」 」,」 」)//過濾空格
Replace(str,」=」,」=」)//過濾等號
Replace(str,」」」」,」"」)//過濾雙引號

5 結束語

通過以上分析我們看到,XSS是一種危害較大、較難防範,並且更加隱蔽的攻擊方式。其實只要明白其原理,再加上勤加思考防範的對策,就可以根治XSS漏洞。

參考文獻
[1]葉子青. ASP網路開發入門與實踐.人民郵電出版社,2006.
[2]韓國峰,柯華坤,王磊. ASP網站開發典型模塊與實例精講.電子工業出版社,2006.

『捌』 thinkphp為什麼過濾style標簽

xss過濾主要是復應對傳值的時候制,防止惡意攻擊者往Web頁面里插入惡意html代碼。
這種編輯器入庫的根本不需要用xss過濾啊,可以用mysql_escape_string過濾一下入庫,然後展示的時候用htmlspecialchars原型輸出就可以了。

閱讀全文

與xss過濾標簽相關的資料

熱點內容
聯想空氣凈化器KJ532怎麼打開 瀏覽:707
污水排放氨氮58什麼意思 瀏覽:161
樹脂水標和國標的區別 瀏覽:964
陳年水垢鍋 瀏覽:253
凈水機濾芯拽不出來怎麼辦 瀏覽:310
耐高溫的離子交換樹脂 瀏覽:625
污水處理污泥管理台賬 瀏覽:267
污水活性氯指標 瀏覽:105
油水分離機排污水 瀏覽:205
寧波好口碑中空纖維超濾膜加工 瀏覽:500
水果凈化器怎麼出水 瀏覽:419
污水徐理實備多少錢 瀏覽:537
廢水監測采樣方法怎麼填寫 瀏覽:298
鋁鍋能用除垢劑 瀏覽:390
反滲透膜結垢是什麼原因引起的 瀏覽:420
飲水機沒有熱水是不出水什麼原因 瀏覽:64
蒸餾實驗的講解 瀏覽:488
換上ro膜後不出廢水了怎麼辦 瀏覽:675
空氣凈化器怎麼開能除甲醛 瀏覽:595
反滲透膜形成背壓怎麼辦 瀏覽:448