>백엔드 개발 >PHP 튜토리얼 >thinkphp框架如何有效防止xss攻击

thinkphp框架如何有效防止xss攻击

WBOY
WBOY원래의
2016-06-06 20:47:351591검색

现在使用的thinkphp3.1.3,貌似这一版本thinkphp对url和表单提交默认做了过滤处理了,因为在一些搜索框和url参数中添加恶意的js脚本都没有被执行,但是还是不放心,thinkphp这个框架没有用多久,但是xss现在应该是越来越多了,想请问各位有经验的大大,用thinkphp,做哪些配置,或者在有用户提交的地方添加什么过滤代码可以让网站更有效的防止xss攻击

回复内容:

现在使用的thinkphp3.1.3,貌似这一版本thinkphp对url和表单提交默认做了过滤处理了,因为在一些搜索框和url参数中添加恶意的js脚本都没有被执行,但是还是不放心,thinkphp这个框架没有用多久,但是xss现在应该是越来越多了,想请问各位有经验的大大,用thinkphp,做哪些配置,或者在有用户提交的地方添加什么过滤代码可以让网站更有效的防止xss攻击

XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案:
1。直接过滤所有的JavaScript脚本;
2.转义Html元字符,使用htmlentities、htmlspecialchars等函数;
3.系统的扩展函数库提供了XSS安全过滤的remove_xss方法;
4.对URL访问的一些系统变量做XSS处理。

相关:
http://www.hdj.me/thinkphp-deny-xss
http://www.2cto.com/Article/201307/231292.html
http://www.oschina.net/question/582888_117471

<code>function remove_xss($val) {
   // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
   // this prevents some character re-spacing such as <java>
   // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
   $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
   // straight replacements, the user should never need these since they're normal characters
   // this prevents like <img  src="@avascript:alert('XSS')" alt="thinkphp框架如何有效防止xss攻击" >
   $search = 'abcdefghijklmnopqrstuvwxyz';
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $search .= '1234567890!@#$%^&*()';
   $search .= '~`";:?+/={}[]-_|\'\\';
   for ($i = 0; $i  0) {
               $pattern .= '(';
               $pattern .= '([xX]0{0,8}([9ab]);)';
               $pattern .= '|';
               $pattern .= '|(�{0,8}([9|10|13]);)';
               $pattern .= ')*';
            }
            $pattern .= $ra[$i][$j];
         }
         $pattern .= '/i';
         $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in  to nerf the tag
         $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
         if ($val_before == $val) {
            // no replacements were made, so exit the loop
            $found = false;
         }
      }
   }
   return $val;
}
</x></java></code>

么么哒~每当给各位做点贡献,我就感觉胸前的红领巾更鲜艳了

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.