技术杂谈

网络新概念,云计算、大数据、O2O、电商。。。。

一、360提示[严重]Ecshop会员中心XSS漏洞修复方案

需要修改文件 user.php
代码 28行
$back_act='';
下新增
$getfilter = "\\<.+javascript:window\\[.{1}\\\\x|<.*=(&#\\d+?;?)+?>|<.*(data|src)=data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|load_file\s*?\\()|<[a-z]+?\\b[^>]*?\\bon([a-z]{4,})\s*?=|^\\+\\/v(8|9)|\\b(and|or)\\b\\s*?([\\(\\)'\"\\d]+?=[\\(\\)'\"\\d]+?|[\\(\\)'\"a-zA-Z]+?=[\\(\\)'\"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?[\"'])|\\/\\*.*\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|\").*?(`|'|\")\s*)|UPDATE\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|\").*?(`|'|\")\s*)SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\\(.+\\)|\\s+?.+?\\s+?|(`|'|\").*?(`|'|\"))FROM(\\(.+\\)|\\s+?.+?|(`|'|\").*?(`|'|\"))|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";

搜索:
if (!empty($_SERVER['QUERY_STRING']))
用以下替换
if (!empty($_SERVER['QUERY_STRING']))
          {	
				if (preg_match("/".$getfilter."/is",$_SERVER['QUERY_STRING'])==1){
				$back_act = '';
				}else{
                $back_act = 'user.php?' . strip_tags($_SERVER['QUERY_STRING']);
				}
            }

二、ecshop的article_cat.php文件xss跨站脚本攻击漏洞 ECSHOP SQL注入漏洞,用 str_replace() 函数 对 参数 $keywords 和 $search_url 进行字符过滤,需要过滤的字符有:' " \ < > & * ;

article_cat.php
    /* 获得文章列表 */
    if (isset($_REQUEST['keywords']))
    {
        $keywords = addslashes(htmlspecialchars(urldecode(trim($_REQUEST['keywords']))));
        
        $pager['search']['keywords'] = $keywords;
        $search_url = substr(strrchr($_POST['cur_url'], '/'), 1);
        //增加过滤,compile是ecshop内置的替换函数
        $keywords=compile_str($keywords);
        $search_url=compile_str($search_url);

三、category.php漏洞

90行
//过滤输入编码
$keyword=compile_str($keyword);

/*------------------------------------------------------ */
//-- PROCESSOR
/*------------------------------------------------------ */


备注:

1.      过滤用户输入的内容,检查用户输入的内容中是否有非法内容。如<>(尖括号)、"(引号)、 '(单引号)、%(百分比符号)、;(分号)、()(括号)、&符号)、+(加号)等。

2.      严格控制输出

可以利用下面这些函数对出现xss漏洞的参数进行过滤

1htmlspecialchars() 函数,用于转义处理在页面上显示的文本。

2htmlentities() 函数,用于转义处理在页面上显示的文本。

3strip_tags() 函数,过滤掉输入、输出里面的恶意标签。

4header() 函数,使用header("Content-type:application/json"); 用于控制 json 数据的头部,不用于浏览。

5urlencode() 函数,用于输出处理字符型参数带入页面链接中。

6intval() 函数用于处理数值型参数输出页面中。

7、自定义函数,在大多情况下,要使用一些常用的 html 标签,以美化页面显示,如留言、小纸条。那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。

各语言示例:

  PHPhtmlentities()或是htmlspecialchars()
   Pythoncgi.escape()
   ASPServer.HTMLEncode()
   ASP.NETServer.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
   Javaxssprotect(Open Source Library)
   Node.jsnode-validator