《PHP教程:Yii2的XSS攻擊防范策略分析》要點:
本文介紹了PHP教程:Yii2的XSS攻擊防范策略分析,希望對您有用。如果有疑問,可以聯系我們。
相關主題:YII框架
本文實例講述了Yii2的XSS攻擊防范策略.分享給大家供大家參考,具體如下:PHP實戰
XSS 漏洞修復PHP實戰
原則: 不相信客戶輸入的數據
注意: 攻擊代碼不一定在<script></script>中PHP實戰
① 將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了.
② 只允許用戶輸入我們期望的數據. 例如: 年齡的textbox中,只允許用戶輸入數字. 而數字之外的字符都過濾掉.
③ 對數據進行Html Encode 處理
④ 過濾或移除特殊的Html標簽, 例如: script, iframe , < for <, > for >, " for
⑤ 過濾JavaScript 事件的標簽.例如 "onclick=", "onfocus" 等等.PHP實戰
Yii中的XSS防范PHP實戰
<?php echo CHtml::encode($user->name) ?>
此方法的源碼:PHP實戰
/** * 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.php */ public static function encode($content, $doubleEncode = true) { return htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE, Yii::$app->charset, $doubleEncode); }
htmlspecialchars & htmlentities & urlencode 三者的區別:PHP實戰
http://php.net/manual/zh/function.htmlspecialchars.php
http://php.net/manual/zh/function.htmlentities.php
http://cn2.php.net/manual/zh/function.urlencode.phpPHP實戰
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.PHP實戰
htmlspecialcharsPHP實戰
Convert special characters to HTML entitiesPHP實戰
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ] ] ] )
The translations performed are:PHP實戰
& (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實戰
<?php $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); echo $new; // <a href='test'>Test</a> ?>
htmlentitiesPHP實戰
Convert all applicable characters to HTML entitiesPHP實戰
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); ?>
urlencodePHP實戰
URL 編碼是為了符合url的規范.因為在標準的url規范中中文和很多的字符是不允許出現在url中的.PHP實戰
例如在baidu中搜索"測試漢字". URL會變成
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477PHP實戰
所謂URL編碼就是: 把所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)
此字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+).此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣.由于歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同.PHP實戰
<?php echo '<a href="mycgi?foo=', urlencode($userinput), '">'; ?>
<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); echo '<a href="mycgi?' . htmlentities($query_string) . '">'; ?>
更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》PHP實戰
希望本文所述對大家基于Yii框架的PHP程序設計有所幫助.PHP實戰
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4799.html