小言_互联网的博客

常见安全漏洞修复

337人阅读  评论(0)

一、xss:

1、介绍:将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。

2、分类:存储型,反射型,DOM型。

3、危害:

(1)、盗用cookie,获取敏感信息。

(2)、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。

(3)、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。

(4)、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

(5)、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

简单来说就是攻击者通过正常的页面或请求,将非法的参数(如:js代码、html代码)请求到后端存储在数据库中,等下次页面回显时执行非法的参数,从而达到攻击的目的。

4、修复方法:

(1)、对用户输入的数据进行严格过滤,包括但不限于以下字符及字符串
Javascript script src href img onerror onload { } ( ) <> = , . ; :  " ' # ! / * \
(2)、 根据页面的输出背景环境,对输出进行编码,常见符号的实体编码如下:[较根本的解决方法]
“(双引号):&quot
’ (单引号):&apos
 &(&符号):&amp
<(左尖括号):&lt
>(右尖括号):&gt
(3)、 使用一个统一的规则和库做输出编码
(4)、 在Cookie 上设置HTTPOnly 标志,从而禁止客户端脚本访问Cookie

如:

5、修复案例:

(1)存储型


  
  1. private static String handleContext(String value) {
  2. if ( value != null) {
  3. value = value.replaceAll( "", "");
  4. Pattern scriptPattern = Pattern.compile( "<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
  5. value = scriptPattern.matcher( value).replaceAll( "");
  6. scriptPattern = Pattern.compile( "src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  7. value = scriptPattern.matcher( value).replaceAll( "");
  8. scriptPattern = Pattern.compile( "</script>", Pattern.CASE_INSENSITIVE);
  9. value = scriptPattern.matcher( value).replaceAll( "");
  10. scriptPattern = Pattern.compile( "<script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  11. value = scriptPattern.matcher( value).replaceAll( "");
  12. scriptPattern = Pattern.compile( "eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  13. value = scriptPattern.matcher( value).replaceAll( "");
  14. scriptPattern = Pattern.compile( "e­xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  15. value = scriptPattern.matcher( value).replaceAll( "");
  16. scriptPattern = Pattern.compile( "javascript:", Pattern.CASE_INSENSITIVE);
  17. value = scriptPattern.matcher( value).replaceAll( "");
  18. scriptPattern = Pattern.compile( "vbscript:", Pattern.CASE_INSENSITIVE);
  19. value = scriptPattern.matcher( value).replaceAll( "");
  20. scriptPattern = Pattern.compile( "onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  21. value = scriptPattern.matcher( value).replaceAll( "");
  22. scriptPattern = Pattern.compile( "onerror(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  23. value = scriptPattern.matcher( value).replaceAll( "");
  24. scriptPattern = Pattern.compile( ".*<.*", Pattern.CASE_INSENSITIVE );
  25. value = scriptPattern.matcher( value).replaceAll( "");
  26. }
  27. return value;
  28. }

(2)反射型:

 

二、
 


转载:https://blog.csdn.net/w_t_y_y/article/details/106658288
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场