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

首頁 > 語言 > PHP > 正文

Yii2的XSS攻擊防范策略分析

2024-05-04 23:49:06
字體:
供稿:網(wǎng)友

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

XSS 漏洞修復(fù)

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

① 將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了.
② 只允許用戶輸入我們期望的數(shù)據(jù)。 例如: 年齡的textbox中,只允許用戶輸入數(shù)字。 而數(shù)字之外的字符都過濾掉。
③ 對數(shù)據(jù)進行Html Encode 處理
④ 過濾或移除特殊的Html標簽, 例如: script, iframe , < for <, > for >, " for
⑤ 過濾JavaScript 事件的標簽。例如 "onclick=", "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.php*/public 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ī)范。因為在標準的url規(guī)范中中文和很多的字符是不允許出現(xiàn)在url中的。

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

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

<?phpecho '<a href="mycgi?foo=', urlencode($userinput), '">';?>
<?php$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);echo '<a href="mycgi?' . htmlentities($query_string) . '">';?>

希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 扶沟县| 大理市| 赤峰市| 双峰县| 元阳县| 平南县| 泰安市| 菏泽市| 南陵县| 慈溪市| 皋兰县| 洮南市| 高陵县| 四子王旗| 家居| 徐汇区| 信阳市| 宝应县| 织金县| 聊城市| 西畴县| 方山县| 娄底市| 西华县| 遂平县| 策勒县| 天长市| 阳朔县| 大竹县| 大邑县| 新和县| 桃江县| 靖安县| 资溪县| 南投市| 大余县| 江安县| 贺州市| 武冈市| 高要市| 贡觉县|