Yii 上的 XSS 保护
XSS Protection on Yii
我需要通过 URL 保护我的 Web 应用程序免受 xss 攻击。
做这个的最好方式是什么?
应用程序很大,所以我无法编辑每个动作,需要一些通用的东西。
示例:
如果你的目标是在处理它们之前操纵你的动作,你可以在你的 controller/component 中使用 beforeAction,像这样:
protected function beforeAction($action) {
#check a preg_match on a url sanitization pattern, like "[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]", for instance
return parent::beforeAction($action);
}
此 articles 展示了如何使用 SQL 注入、XSS 攻击和 CSRF 确保您的应用程序安全。
希望对你有帮助。
首先,您可以使用正则表达式来验证您的输入,您可以将您的输入概括为一些正则表达式,如下所示:
$num = $_GET["index"];
if (preg_match("^\d{2}$", $num)) {
//allowed
} else {
//not allowed
}
您还可以创建白名单或黑名单,如果您的输入可以分组到应用程序允许的范围内,则使用白名单,否则使用黑名单。此列表可以存储在您的数据库或文件中,您可以轻松升级而不会影响您的应用程序。在处理您的输入之前,您只需将您的输入与该列表进行比较。
我最后的建议是编码,你应该对你的输入和输出进行编码,因为你来自数据库的数据可能包含恶意代码,也许有人错误或恶作剧,总是考虑所有可能性。对于这种情况,我记得函数 htmlspecialchars
和 utf8_encode
,我认为你应该是第一个函数,你也可以分析你的输入并构建你自己的编码函数。
我分享以下链接:
希望这些信息对您有所帮助。
祝你好运。
对于相同的所有操作,只需向 onBeginRequest 添加一个事件句柄:
$this->attachEventHandler('onBeginRequest', [$this, 'purifyParams']);
public function purifyParams($event)
{
$userAgent = $this->getRequest()->getUserAgent();
$isIE = preg_match('/(msie)[ \/]([\w.]+)/i', $userAgent, $version);
if (!empty($isIE) && (int) $version[2] < 11) {
$purifier = new CHtmlPurifier();
$_GET = array_map(function ($param) use ($purifier) {
return $purifier->purify($param);
}, $_GET);
}
}
我需要通过 URL 保护我的 Web 应用程序免受 xss 攻击。 做这个的最好方式是什么? 应用程序很大,所以我无法编辑每个动作,需要一些通用的东西。
示例:
如果你的目标是在处理它们之前操纵你的动作,你可以在你的 controller/component 中使用 beforeAction,像这样:
protected function beforeAction($action) {
#check a preg_match on a url sanitization pattern, like "[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]", for instance
return parent::beforeAction($action);
}
此 articles 展示了如何使用 SQL 注入、XSS 攻击和 CSRF 确保您的应用程序安全。
希望对你有帮助。
首先,您可以使用正则表达式来验证您的输入,您可以将您的输入概括为一些正则表达式,如下所示:
$num = $_GET["index"];
if (preg_match("^\d{2}$", $num)) {
//allowed
} else {
//not allowed
}
您还可以创建白名单或黑名单,如果您的输入可以分组到应用程序允许的范围内,则使用白名单,否则使用黑名单。此列表可以存储在您的数据库或文件中,您可以轻松升级而不会影响您的应用程序。在处理您的输入之前,您只需将您的输入与该列表进行比较。
我最后的建议是编码,你应该对你的输入和输出进行编码,因为你来自数据库的数据可能包含恶意代码,也许有人错误或恶作剧,总是考虑所有可能性。对于这种情况,我记得函数 htmlspecialchars
和 utf8_encode
,我认为你应该是第一个函数,你也可以分析你的输入并构建你自己的编码函数。
我分享以下链接:
希望这些信息对您有所帮助。
祝你好运。
对于相同的所有操作,只需向 onBeginRequest 添加一个事件句柄:
$this->attachEventHandler('onBeginRequest', [$this, 'purifyParams']);
public function purifyParams($event)
{
$userAgent = $this->getRequest()->getUserAgent();
$isIE = preg_match('/(msie)[ \/]([\w.]+)/i', $userAgent, $version);
if (!empty($isIE) && (int) $version[2] < 11) {
$purifier = new CHtmlPurifier();
$_GET = array_map(function ($param) use ($purifier) {
return $purifier->purify($param);
}, $_GET);
}
}