bardo 发表于 2008-6-26 09:28:31

一起来写一个高效的xss_clean,是否可以

xss_clean的效率实在不敢恭维,根本点还是算法,大家是否有兴趣讨论一个快速高效的算法。
比如:安全的clean_filename绝不是象CI中的那些用数组一一清理,以下函数要比CI中的更加有效与安全:
function clean_file_name( &$file_name )
{
$file_name = strtolower( trim($file_name) );

// Replace spaces with _
$file_name = preg_replace( '/[\s]+/', '_', $file_name );

// Remove all chars except a-z0-9-_.
$file_name = preg_replace( '/[^a-z0-9'-_'.]+/', '', $file_name );
if ($file_name == '.') { // first char is dot
   $file_name = "_".$file_name;
}
if (!strlen($file_name)) { // if all chars were stripped out by regex
   $file_name = 'uploaded_file';
}
return $file_name;
}

Hex 发表于 2008-6-26 09:37:54

呵呵,我也是觉得 CI 的 XSS 过滤效率有问题。
这么好的代码我先学习一下!

kkito 发表于 2008-6-26 11:54:05

先科普一下xss是啥好不?

Hex 发表于 2008-6-26 12:55:21

XSS = 跨站脚本攻击

bardo 发表于 2008-6-26 16:56:00

查看了一下帮助,发现其实根本没必要

因为htmlspecialchars从PHP 4.3.0 及其后续版本支持如下字符集。 已支持字符集 字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加了 Latin-1(ISO-8859-1)中缺少的欧元符号、法国及芬兰字母。
UTF-8   ASCII 兼容多字节 8-bit Unicode。
cp866 ibm866, 866 DOS-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1251 Windows-1251, win-1251, 1251 Windows-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1252 Windows-1252, 1252 Windows 对于西欧特有的字符集。
KOI8-R koi8-ru, koi8r 俄文。PHP 4.3.2 开始支持该字符集。
BIG5 950 繁体中文,主要用于中国台湾。
GB2312 936 简体中文,国际标准字符集。
BIG5-HKSCS   繁体中文,Big5 的延伸,主要用于香港。
Shift_JIS SJIS, 932 日文。
EUC-JP EUCJP 日文。
对我们而言,无论是GB2312,还是UTF8,直接用strip_tags 加上 htmlspecialchars 即可

kkito 发表于 2008-6-26 21:09:16

学习了一下下,这东西是不是能纯在客户端就能得到cookie啥的?

skeay 发表于 2011-2-27 13:18:15

这个可以过滤 'or'='or'
and 1=1 是吧?

Hex 发表于 2011-2-27 20:47:56

回复 7# skeay


    你这个不是 XSS 攻击,你这个是 SQL 注入,这个只需要转义相关字符即可,AR 类会帮你转义的。

skeay 发表于 2011-2-27 21:37:28

哦 是这样啊
页: [1]
查看完整版本: 一起来写一个高效的xss_clean,是否可以