国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

對(duì)于Yii2的XSS攻擊防范策略的方法解析

2020-03-22 18:39:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了Yii2的XSS攻擊防范策略,較為詳細(xì)的分析了XSS攻擊的原理及Yii2相應(yīng)的防范策略,需要的朋友可以參考下

本文實(shí)例講述了Yii2的XSS攻擊防范策略。分享給大家供大家參考,具體如下:

XSS 漏洞修復(fù)

原則: 不相信客戶(hù)輸入的數(shù)據(jù)
注意: 攻擊代碼不一定在 script /script 中

① 將重要的cookie標(biāo)記為http only, 這樣的話(huà)Javascript 中的document.cookie語(yǔ)句就不能獲取到cookie了.
② 只允許用戶(hù)輸入我們期望的數(shù)據(jù)。 例如: 年齡的textbox中,只允許用戶(hù)輸入數(shù)字。 而數(shù)字之外的字符都過(guò)濾掉。
③ 對(duì)數(shù)據(jù)進(jìn)行Html Encode 處理
④ 過(guò)濾或移除特殊的Html標(biāo)簽, 例如: script, iframe , for , for , quot for
⑤ 過(guò)濾JavaScript 事件的標(biāo)簽。例如 quot;, onfocus 等等。

Yii中的XSS防范

 ?php echo CHtml::encode($user- name) ? 

此方法的源碼:

/*** Encodes special characters into HTML entities.* The [[/yii/base/Application::charset|application charset]] will be used for encoding.* @param string $content the content to be encoded* @param boolean $doubleEncode whether to encode HTML entities in `$content`. If false,* HTML entities in `$content` will not be further encoded.* @return string the encoded content* @see decode()* @see http://www.php.net/manual/en/function.htmlspecialchars.phppublic static function encode($content, $doubleEncode = true) return htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE, Yii::$app- charset, $doubleEncode);}

htmlspecialchars htmlentities urlencode 三者的區(qū)別:

http://php.net/manual/zh/function.htmlspecialchars.php
http://php.net/manual/zh/function.htmlentities.php
http://cn2.php.net/manual/zh/function.urlencode.php

Available flags constants
Constant Name Description
ENT_COMPAT Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES Will convert both double and single quotes.
ENT_NOQUOTES Will leave both double and single quotes unconverted.
ENT_IGNORE Silently discard invalid code unit sequences instead of returning an empty string. Using this flag is discouraged as it ? may have security implications.
ENT_SUBSTITUTE Replace invalid code unit sequences with a Unicode Replacement Character U+FFFD (UTF-8) or FFFD; (otherwise) instead of returning an empty string.
ENT_DISALLOWED Replace invalid code points for the given document type with a Unicode Replacement Character U+FFFD (UTF-8) or FFFD; (otherwise) instead of leaving them as is. This may be useful, for instance, to ensure the well-formedness of XML documents with embedded external content.
ENT_HTML401 Handle code as HTML 4.01.
ENT_XML1 Handle code as XML 1.
ENT_XHTML Handle code as XHTML.
ENT_HTML5 Handle code as HTML 5.

htmlspecialchars

Convert special characters to HTML entities

string htmlspecialchars (  string $string  [, int $flags = ENT_COMPAT | ENT_HTML401  [, string $encoding = ini_get( default_charset )  [, bool $double_encode = true ])

The translations performed are:

(ampersand) becomes
(double quote) becomes when ENT_NOQUOTES is not set.
(single quote) becomes (or ) only when ENT_QUOTES is set.
(less than) becomes
(greater than) becomes

 ?php$new = htmlspecialchars( a href= test Test /a , ENT_QUOTES);echo $new; // a href= test Test /a ? 

htmlentities

Convert all applicable characters to HTML entities

string htmlentities (  string $string  [, int $flags = ENT_COMPAT | ENT_HTML401  [, string $encoding = ini_get( default_charset )  [, bool $double_encode = true ])

 ?php$str = A quote is b bold /b // Outputs: A quote is b bold /b echo htmlentities($str);// Outputs: A quote is b bold /b echo htmlentities($str, ENT_QUOTES);? 

urlencode

URL 編碼是為了符合url的規(guī)范。因?yàn)樵跇?biāo)準(zhǔn)的url規(guī)范中中文和很多的字符是不允許出現(xiàn)在url中的。

例如在baidu中搜索 測(cè)試漢字 。 URL會(huì)變成
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6 rsv_bp=0 rsv_spt=3 inputT=7477

所謂URL編碼就是: 把所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(hào)(+)
字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(hào)(+)。此編碼與 WWW 表單 POST 數(shù)據(jù)的編碼方式是一樣的,同時(shí)與 application/x-www-form-urlencoded 的媒體類(lèi)型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(hào)(+)方面與 RFC1738 編碼(參見(jiàn) rawurlencode())不同。

 ?phpecho a href= mycgi?foo= , urlencode($userinput), ? 

 ?php$query_string = foo= . urlencode($foo) . bar= . urlencode($bar);echo a href= mycgi? . htmlentities($query_string) . ? 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !

相關(guān)推薦:

如何實(shí)現(xiàn)Yii清理緩存

如何處理Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義

以上就是對(duì)于Yii2的XSS攻擊防范策略的方法解析的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 韶山市| 松阳县| 柏乡县| 临沭县| 托里县| 星座| 多伦县| 琼海市| 湖州市| 湘阴县| 乐清市| 唐海县| 滨州市| 合水县| 温泉县| 镶黄旗| 托克托县| 平潭县| 盘山县| 齐齐哈尔市| 西藏| 库尔勒市| 兴和县| 安多县| 玛曲县| 辉县市| 库车县| 惠水县| 湖州市| 丰都县| 如东县| 新龙县| 新和县| 长阳| 福鼎市| 玉树县| 大庆市| 托克逊县| 修武县| 灵丘县| 璧山县|