浏览 3390 次
锁定老帖子 主题:bboss防止跨站攻击策略
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-10-12
最后修改:2014-05-10
此前博客中撰文介绍了bboss 动态令牌机制轻松搞定表单重复提交的方法,本文介绍bboss防止跨站攻击的方法。 通过增强bboss字符编码转换器的功能实现防止跨站攻击功能: com.frameworkset.common.filter.CharsetEncodingFilter 单纯(不具备防止跨站攻击能力)的字符编码转换过滤器的使用方法如下: <filter> <filter-name>CharsetEncoding</filter-name> <filter-class>com.frameworkset.common.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>RequestEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>ResponseEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>mode</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>checkiemodeldialog</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.frame</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.page</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.freepage</url-pattern> </filter-mapping> 这种情况下CharsetEncodingFilter是不具备防止跨站攻击功能的,但是为其增加两个init-param参数后就可以了: wallfilterrules 指定黑名单单词表,以逗号分隔多个单词,只要在参数值中出现其中的一个单词,参数值就会被置为null(即参数被过滤掉) wallwhilelist 指定不会被黑名单检测的参数的名称清单,多个参数以逗号分隔,白名单中的参数安全性需要应用程序自己控制,对值中出现的非法字符需要进行相应的处理后再输出到客服端(比如,针对浏览器的转义处理等措施) 下面看一个具体的配置示例: <filter> <filter-name>CharsetEncoding</filter-name> <filter-class>com.frameworkset.common.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>RequestEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>ResponseEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>mode</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>checkiemodeldialog</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>wallfilterrules</param-name> <param-value><![CDATA[><,%3E%3C,<iframe,%3Ciframe,<script,%3Cscript,<img,%3Cimg,alert(,alert%28,eval(,eval%28,style=,style%3D]]> </param-value> </init-param> <init-param> <param-name>wallwhilelist</param-name> <param-value><![CDATA[content,fileContent]]> </param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.frame</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.page</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>*.freepage</url-pattern> </filter-mapping> 配置完毕后,可以通过IBM APPSCAN和Netsparker之类的安全扫描工具来验证配置的有效性,同时可以根据测试结果或者实际情况调整wallfilterrules和wallwhilelist两个参数的配置,直到你的系统变得足够安全为止。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-10-14
最后修改:2013-10-14
你之所以每天在这里叫嚣,却甚少有人回应你,是因为你的软件没有让人眼前一亮的特色功能,说的难听点,就是你的框架是东拼西凑的东西,从底层技术,到功能实现,都是借鉴别人的,没有原创型亮点。
我不是信口开河,我看过你的源代码,有一次我需要解决一个问题,就是如何在一个方法内获得方法参数的名字( 不为参数添加注解的情况下,目的是为了最大化容错,做到即使开发者粗心大意忘记写参数注解,也可以自动根据方法参数的名字,使之与URI参数匹配上),我解决这个问题的时候,曾经看过你的源代码,发现你的代码都是东拼西凑过来的,甚至有的类是直接从Spring中拷贝过来的。 说实话,这种“借鉴”并不可耻,也很普遍,我也经常这么做,但是,如果想要把自己的软件推广开来,是不能天天卖弄一些别人都有的东西的,需要自己有亮眼的创新才可以。 我想你的技术应该是很好的,你缺的不是技术,是思路,我感觉你需要一个产品经理,或者说是需要一个产品设计师。 如果你想在WEB开发平台方面有所创新,可以联系我,可以给我私信,我也是做企业架构的,说不定咱们可以合作一把。 |
|
返回顶楼 | |
发表时间:2013-10-14
youarestupid 写道 你之所以每天在这里叫嚣,却甚少有人回应你,是因为你的软件没有让人眼前一亮的特色功能,说的难听点,就是你的框架是东拼西凑的东西,从底层技术,到功能实现,都是借鉴别人的,没有原创型亮点。
我不是信口开河,我看过你的源代码,有一次我需要解决一个问题,就是如何在一个方法内获得方法参数的名字( 不为参数添加注解的情况下,目的是为了最大化容错,做到即使开发者粗心大意忘记写参数注解,也可以自动根据方法参数的名字,使之与URI参数匹配上),我解决这个问题的时候,曾经看过你的源代码,发现你的代码都是东拼西凑过来的,甚至有的类是直接从Spring中拷贝过来的。 说实话,这种“借鉴”并不可耻,也很普遍,我也经常这么做,但是,如果想要把自己的软件推广开来,是不能天天卖弄一些别人都有的东西的,需要自己有亮眼的创新才可以。 我想你的技术应该是很好的,你缺的不是技术,是思路,我感觉你需要一个产品经理,或者说是需要一个产品设计师。 如果你想在WEB开发平台方面有所创新,可以联系我,可以给我私信,我也是做企业架构的,说不定咱们可以合作一把。 楼上,拿来主义,也是个不错的方法,没法有好批评的地方 |
|
返回顶楼 | |
发表时间:2013-10-15
最后修改:2013-10-17
youarestupid 写道 你之所以每天在这里叫嚣,却甚少有人回应你,是因为你的软件没有让人眼前一亮的特色功能,说的难听点,就是你的框架是东拼西凑的东西,从底层技术,到功能实现,都是借鉴别人的,没有原创型亮点。
我不是信口开河,我看过你的源代码,有一次我需要解决一个问题,就是如何在一个方法内获得方法参数的名字( 不为参数添加注解的情况下,目的是为了最大化容错,做到即使开发者粗心大意忘记写参数注解,也可以自动根据方法参数的名字,使之与URI参数匹配上),我解决这个问题的时候,曾经看过你的源代码,发现你的代码都是东拼西凑过来的,甚至有的类是直接从Spring中拷贝过来的。 说实话,这种“借鉴”并不可耻,也很普遍,我也经常这么做,但是,如果想要把自己的软件推广开来,是不能天天卖弄一些别人都有的东西的,需要自己有亮眼的创新才可以。 我想你的技术应该是很好的,你缺的不是技术,是思路,我感觉你需要一个产品经理,或者说是需要一个产品设计师。 如果你想在WEB开发平台方面有所创新,可以联系我,可以给我私信,我也是做企业架构的,说不定咱们可以合作一把。 这位youarestupid回帖火药味十足啊,是个率性之人,这种性格我喜欢。从你的回帖里面可以看出你对bboss意见很大,还花了点心思看了下bboss的代码,并且能发现并指出bboss从spring拷贝了一个读取方法参数名称的类,这点让人钦佩。youarestupid说bboss借鉴了一些spring的东西,这个确实如此。但是,通过这个基于asm的帮助类获取到方法参数名称后,bboss如何存储这些参数元信息,又是如何使用这些元信息进行参数绑定的,这些东东才是bboss主要的东西,如果只关注某个点,很容易陷入只见树木不见森林的怪圈。从我本人的角度来看,bboss是一套完整的开源技术框架,为构建企业应用提供了一站式解决方案,而不是一个东拼西凑出来的东东,bboss的很多特色都可以从这个地址了解:http://yin-bp.iteye.com/。 youarestupid应该也是一位热衷于技术的牛人,本人非常喜欢和热衷于技术的同行交流,尤其是面对面的碰撞和交流 ,通过种交流可以增进了解消除误区,可以发现bboss的不足、从中汲取好的思想和创意,不断完善和改进bboss。另外本人每天都忙于日常的项目上的事情,多是在业余时间来ITeye上逛逛,今天突然看到有人回复帖子,还是挺吃惊的 ,如果youarestupid有意指点一二,我的联系方式在以下链接上可以找到: http://yin-bp.iteye.com/blog/1080824 做了这么多年的bboss,已经形成了一种在ITeye上写博客和发帖子的习惯,尤其是喜欢在ITeye上撰写介绍bboss方方面面的豆腐块文章,这样其实挺好,因为iteye提供的这个交流平台还不错,再者有些东西不写出来,放在脑袋里面估计过段时间就忘记了,而且还能起到分享的作用,而且还可以将这些文章整理出来,作为技术手册供bboss的使用者参考。最难能可贵的是在写技术性文档的同时可能会有新的想法冒出来,也可能会发现实现上的一些缺陷。总之做这个事情有百利而无一害,绝对不是为了所谓的“叫嚣”,“希望有人回应”,“哗众取宠”,“卖弄”之类的。 |
|
返回顶楼 | |