導航:首頁 > 凈水問答 > jqueryxss過濾函數

jqueryxss過濾函數

發布時間:2021-03-12 03:55:33

『壹』 js用什麼函數過濾非法字元防止跨站腳本攻擊

test
如:抄<input type="text" id="txtceshi" /><input type="button" onclick="yanzheng()" value="ceshi" />
<script type="text/javascript">
function yanzheng() {
var ce = txtceshi.value;//獲取文本框的值
var ze = /[^0-9]+/; //只能是數字,這里可以在網上找到一些正則替換成你想要的表達式
if (ze.test(ce)) {
alert("數據不合法!");
}
}
</script>

『貳』 如何增加自定義的函數過濾

載入輔助函來數載入輔助函數是非源常簡單的:$this->load->helper('name'); name 是輔助函數文件的名字(不帶.php後綴 和"helper" 部分)。例如,要載入文件名為url_helper.php的URL Helper,你將會用到下面的語句:$this->load->helper('url'); 輔助函數可以在你的控制器(controller)的任何地方被載入,甚至可以在視圖(View)文件中被載入(我們並不建議你這么做)。請在使用輔助函數之前載入他們。你可以在你的控制器構造函數中載入它們,以便輔助函數能自動在其他函數之前被載入。你也可以在要用到輔助函數的地方當場載入。

『叄』 如何防止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的方法之一主要是將用戶所提供的內容輸入輸出進行過濾,回許多語言答都有提供對HTML的過濾:
可以利用下面這些函數對出現xss漏洞的參數進行過濾:
PHP的htmlentities()或是htmlspecialchars()。
Python 的 cgi.escape()。
ASP 的 ServerEncode()。
ASP.NET 的 ServerEncode() 或功能更強的 Microsoft Anti-Cross Site Scripting Library
Java 的 xssprotect(Open Source Library)。
Node.js 的 node-validator。
方案二:使用開源的漏洞修復插件。( 需要站長懂得編程並且能夠修改伺服器代碼 )

『伍』 ==請教各位,xss_clean把提交內容的<script...轉換得面目全非==

直接用$this->input->post() 其實就是去掉了跨站腳本過濾功能。手冊上有說明post的第二個參數。第二個參數是可選的,如果想讓取得的數據經過跨站腳本過濾(XSS Filtering),把第二個參數設為TRUE。

『陸』 XSS 攻擊時怎麼繞過 htmlspecialchars 函數

繞不過。

所謂繞過就是挑程序員忘記正確轉碼的地方下手。

注意並非htmlspecialchars就萬事大吉,不同的地方需要不同的轉碼。所以所謂繞過htmlspecialchars也可能指那個漏洞點用htmlspecialchars轉碼壓根不正確。

『柒』 在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=

閱讀全文

與jqueryxss過濾函數相關的資料

熱點內容
液相用溶劑過濾器 瀏覽:674
納濾水導電率 瀏覽:128
反滲透每小時2噸 瀏覽:162
做一個純凈水工廠需要多少錢 瀏覽:381
最終幻想4回憶技能有什麼用 瀏覽:487
污水提升器采通 瀏覽:397
反滲透和不發滲透凈水器有什麼區別 瀏覽:757
提升泵的揚程 瀏覽:294
澤德提升泵合肥經銷商 瀏覽:929
飲水機後蓋漏水了怎麼辦 瀏覽:953
小型電動提升器 瀏覽:246
半透膜和細胞膜區別 瀏覽:187
廢水拖把池 瀏覽:859
十四五期間城鎮污水處理如何提質增效 瀏覽:915
怎麼測試空氣凈化器的好壞 瀏覽:519
提升泵是幹嘛的 瀏覽:744
布油做蒸餾起沫咋辦 瀏覽:252
廣州工業油煙凈化器一般多少錢 瀏覽:204
喜哆哆空氣凈化器效果怎麼樣 瀏覽:424
油煙凈化器油盒在什麼位置 瀏覽:582