XSS过滤函数修正版 PHP

前面这个帖子 http://blog.csdn.net/kaosini/article/details/7646363已经介绍了XSS防御的两种方法,但是凡事还是应该以事实为依据,于是我测试了里面提到的两个方法


1.function RemoveXSS($val)

2.function filter_xss($string, $allowedtags = '')

$testXssString="<span>aaa</span><img SRC=\"javascr
ipt:alert('a');\" />";//aaa<img STYLE=\"background-image: url(javascript:alert('XSS'))\">
echo RemoveXss($testXssString);
//$testXssString=strip_tags($testXssString,"<span><img>");
//echo 'strip_tags:'.$testXssString;
echo filter_xss($testXssString,"<img>");

试验结果是两个方法都不行,实验结果为:

<span>aaa</span><img SRC="javascr&#x0d;ipt:alert('a');" /><br />aaa<img SRC="javascr&#x0d;ipt:alert('a');" />

所以这两个方法有问题,之前引用的帖子说第二种方法靠谱,推荐,但我认为第一种方法比较好,代码也比较清晰,跟踪了代码,发现是他的正则写的少考虑了&#x0d;,把它加进去就能过滤了。

个人认为我修正bug后,还有很多情况没考虑到,欢迎大家多提意见,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
回答: 在Spring Boot中实现XSS过滤可以通过创建自定义过滤器来实现。首先,在Spring Boot启动类中添加过滤器扫描的注解`@ServletComponentScan("com.cpic.config.xss")`,这个注解指定了自定义过滤器的位置。同时,还需要在启动类上添加`@WebFilter`注解来指定过滤器的名称和URL模式。具体的过滤逻辑可以在自定义过滤器的`doFilter`方法中实现。\[1\]\[2\] 在过滤器中,可以使用`XssHttpServletRequestWrapper`来对请求进行包装,以实现XSS过滤的功能。这个包装类可以对请求参数进行过滤,包括表单传值(`@RequestParam`)和URL传参(`@PathVariable`)。\[2\] 需要注意的是,Spring Boot中常见的接收参数方式有三种:`@RequestParam`、`@PathVariable`和`@RequestBody`。对于表单传值(`@RequestParam`),可以通过过滤器来进行XSS过滤。\[3\] 综上所述,可以通过创建自定义过滤器来实现Spring Boot中的XSS过滤。在过滤器中对请求进行包装,并对表单传值进行过滤,以防止XSS攻击的发生。 #### 引用[.reference_title] - *1* *2* *3* [Springboot过滤xss](https://blog.csdn.net/Time_Point/article/details/116162806)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值