一种网站跨站脚本攻击的防御方法技术

技术编号:26653334 阅读:22 留言:0更新日期:2020-12-09 00:56
本发明专利技术公开了一种网站跨站脚本攻击的防御方法,其特征在于,包括步骤1:分析网站业务逻辑,判断请求是否支持脚本代码输入,根据业务层面的需要支持特定的请求存储代码,输出到页面,用以达到完成业务逻辑,根据请求来配置白名单;根据URL进行模糊匹配和精确匹配,根据后端接口中的controller类名进行匹配,步骤2:分析前端页面交互,判断输入数据的交互是否需要经过服务端处理,步骤3:后端程序改造,从程序上对来自前端页面的请求参数进行处理。可以达到能灵活、便捷地防御跨站脚本攻击,提高网站的安全性,保证用户的信息安全,降低用户信息泄露的风险,提升用户的体验的效果。同时简单灵活的配置更能贴合业务逻辑的需要。

【技术实现步骤摘要】
一种网站跨站脚本攻击的防御方法
本专利技术涉及互联网
,特别是涉及一种网站跨站脚本攻击的防御方法。
技术介绍
互联网技术的进步,促进着互联网产业的蓬勃发展,同时也伴随着形形色色的网络安全问题。如今网络安全问题越来越受到互联网从业者的重视,如何解决网络安全问题是一个互联网企业的立身之本。跨站脚本攻击(CrossSiteScript,为了和层叠样式表CascadingStyleSheet,CSS有所区分,又称XSS攻击)是一种常见的网络安全问题。具体来讲,跨站脚本攻击是指攻击者通过在Web页面中嵌入恶意的可执行脚本或者HTML代码,当用户访问该页面时,镶嵌的恶意脚本或代码就会执行。攻击者可以通过多种方式危害用户,包括通过获取用户的session信息从而伪装成用户访问授权网站,盗取用户信息和账号,读取、篡改、添加、删除、盗窃企业重要的、具有商业价值的资料,造成重大的损失。XSS漏洞主要分为反射性XSS(reflected-XSS),存储型XSS(stored-XSS),DOM型XSS(DOM-basedXSS)这三种类型。利用存储型XSS漏洞是对web服务器进行攻击不易发现,造成的危害甚大,而且当前没有一个较好的检测工具。目前主流的存储型XSS防御建议有以下几条:1.前端对输入内容的特定字符进行编码,例如表示html标记的<>以及一下脚本标签等符号。2.后端接口中对相关接收到的参数进行过滤处理或者转译存储。3.对重要的cookie设置httpOnly,防止客户端通过document.cookie读取cookie,此HTTP头由服务端设置。4.将不可信的值输出URL参数之前,进行URLEncode操作,而对于从URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。5.页面上的从后端获取到的数据全部转译处理过后展示给客户。一般项目中,都或多或少的遵守以上建议做出防御方案。而领动云营销平台是一款基于Saas模式的云建站工具,平台上有很多积木组件和区块,有部分区块则需要支持书写代码进行保存,然后通过代码来达到个性化定制的效果。在这种情况下,传统的一刀切式的防御方法就可能就不太合适,因此需要一个更加灵活,更加切合业务逻辑的方法来防御XSS安全漏洞。
技术实现思路
为抵御不法分子利用XSS安全漏洞对动态网站进行攻击,从而盗取用户信息和账号,读取、篡改、添加、删除、盗窃企业重要的、具有商业价值的资料,造成重大的损失,本专利技术提供一种网站跨站脚本攻击的防御方案,通过在一次数据从用户输入到数据库存储,再到页面展示的过程中,提供多重校验和防御方法来达到灵活有效地处理XSS攻击,从而达到保护用户信息安全地目的。为解决上述技术问题,本专利技术提供一种网站跨站脚本攻击的防御方法,其特征在于,包括如下步骤:步骤1:分析网站业务逻辑,判断业务是否支持脚本代码输入,一些特定的业务需求是需要支持脚本代码输入,存储,输出到页面,用以达到完成业务逻辑的目的,比如我们公司建站平台中的各种高级组件和区块,是支持输入代码来达到各种高级定制效果。这些组件和区块的设置保存项请求都有相同的url前缀,根据请求url来配置白名单。所述白名单支持不止一种形式的配置:根据URL进行模糊匹配和精确匹配,根据后端接口中的controller类名进行匹配,根据请求中参数的字段名进行匹配。步骤2:分析前端页面交互,判断输入数据的交互是否需要经过服务端处理。如果一个数据输入保存之后不发任何请求,而是直接作用在页面上,这种交互则是不经过服务端处理的;反之,则需要服务端处理。对于不经过服务端处理交互,在js中进行转译处理,避免出现反射性XSS漏洞,提升用户体验。对于需要经过服务端处理的交互,进一步判断交互在业务逻辑上是否会存在XSS漏洞的请求,对于不会存在XSS漏洞的请求,则在前端页面设置校验;比如电话号码,邮箱等有固定格式的输入框,这些数据的保存,就是从逻辑上不存在XSS漏洞。步骤3:服务端程序改造,从服务端程序上对来自前端页面的请求参数进行处理,包括:步骤3-1:在请求到达具体的Controller接口前,通过aop面向切面编程的方式,获取到请求的url和参数,在白名单里根据优先级配置依次匹配判断,如匹配到就放行请求;步骤3-2:对于没有匹配到白名单的请求,判断该请求是否需要数据库写入权限的操作。一个请求如果涉及到添加,修改,删除数据库中数据,即判定为是需要写入权限。如果是需要写入数据库的请求,则对参数进行过滤;步骤3-3:如果请求只涉及查询数据库的权限,则直接放行去查询数据库,在数据返回到前端做渲染处理之前,对查询结果做转译处理。所述步骤3-1中,白名单的优先级配置具体为:URL精确匹配>URL模糊匹配>类名匹配。所述步骤2中,对于不会存在XSS漏洞的请求,则在前端页面设置校验;所述设置校验具体为:填入内容至邮箱和电话号码输入框,判断内容中是否存在特殊字符,如是则直接中止请求发送,并且给出相应的提示。所述步骤3-2中,所述过滤具体是指:运用AntiSamy对参数中可能存在的脚本代码进行过滤,比对过滤前后的参数是否一致,记录拦截日志。本专利技术所达到的有益效果:能灵活、便捷地防御跨站脚本攻击,提高网站的安全性,保证用户的信息安全,降低用户信息泄露的风险,提升用户的体验。同时简单灵活的配置更能贴合业务逻辑的需要。附图说明图1为本专利技术的示例性实施例的方法流程简图。具体实施方式下面结合附图和示例性实施例对本专利技术作进一步的说明:如图1所示的一种网站跨站脚本攻击的防御方法,步骤1:分析网站业务逻辑,确认哪些请求URL是可以支持脚本代码输入的,那些是不支持的。因为业务层面需要支持某些特定的请求存储代码,输出到页面,来达到完成业务逻辑的目的。比如我们公司建站平台中的各种高级组件和区块,是支持输入代码来达到各种高级定制效果。这些组件和区块的设置保存项请求都有相同的url前缀,根据请求url来配置白名单。支持多重形式的白名单配置,可以根据URL来模糊匹配和精确匹配,也可以根据后端接口中的controller类名来匹配。其中默认优先级URL精确匹配>URL模糊匹配>类名匹配,也可以自定义优先级。防御的优先级可以针对复杂的业务逻辑来灵活配置,来达到过滤XSS攻击的作用。步骤2:分析前端交互,判断输入数据的交互是否需要经过服务端处理。如果一个数据输入保存之后不发任何请求,而是直接作用在页面上,这种交互则是不经过服务端处理的;反之,则需要服务端处理。对于不经过服务端处理而是通过js处理直接展示在页面的交互,要在js中进行转译处理,避免出现反射性XSS漏洞,提升用户体验。对于一些需要服务端处理,而从业务逻辑上不会存在XSS漏洞的请求,前端页面设置并做好严格校验。比如说,填入内容至邮箱,电话号码等有固定格式的输入框,判断内容中是否存在特殊字符,一旦本文档来自技高网
...

【技术保护点】
1.一种网站跨站脚本攻击的防御方法,其特征在于,包括如下步骤:/n步骤1:分析网站业务逻辑,判断业务是否支持脚本代码输入,所述支持脚本代码输入的业务的设置保存项请求都有相同的URL前缀,根据请求URL来配置白名单,所述白名单支持不止一种形式的配置;根据URL进行模糊匹配和精确匹配,根据后端接口中的controller类名进行匹配,/n步骤2:分析前端页面交互,判断输入数据的交互是否需要经过服务端处理,如果一个数据输入保存之后不发任何请求,而是直接作用在页面上,则这种交互是不需要经过服务端处理的;反之,则需要经过服务端处理;对于不需要经过服务端处理而通过js处理直接展示在页面的交互,在js中进行转译处理,对于需要经过服务端处理的交互,判断交互在业务逻辑上是否会存在XSS漏洞的请求,对于不会存在XSS漏洞的请求,则在前端页面设置校验;/n步骤3:后端程序改造,从程序上对来自前端页面的请求参数进行处理,包括:/n步骤3-1:在请求到达具体的Controller接口前,通过aop面向切面编程的方式,获取到请求的url和参数,在白名单里根据优先级依次匹配判断,如匹配到就放行请求;/n步骤3-2:对于没有匹配到白名单的请求,判断该请求是否需要数据库写入权限的操作,如果是需要写入数据库的请求,则对参数进行过滤;/n步骤3-3:如果请求只涉及查询数据库的权限,则直接放行去查询数据库,在数据返回到前端做渲染处理之前,对查询结果做转译处理。/n...

【技术特征摘要】
1.一种网站跨站脚本攻击的防御方法,其特征在于,包括如下步骤:
步骤1:分析网站业务逻辑,判断业务是否支持脚本代码输入,所述支持脚本代码输入的业务的设置保存项请求都有相同的URL前缀,根据请求URL来配置白名单,所述白名单支持不止一种形式的配置;根据URL进行模糊匹配和精确匹配,根据后端接口中的controller类名进行匹配,
步骤2:分析前端页面交互,判断输入数据的交互是否需要经过服务端处理,如果一个数据输入保存之后不发任何请求,而是直接作用在页面上,则这种交互是不需要经过服务端处理的;反之,则需要经过服务端处理;对于不需要经过服务端处理而通过js处理直接展示在页面的交互,在js中进行转译处理,对于需要经过服务端处理的交互,判断交互在业务逻辑上是否会存在XSS漏洞的请求,对于不会存在XSS漏洞的请求,则在前端页面设置校验;
步骤3:后端程序改造,从程序上对来自前端页面的请求参数进行处理,包括:
步骤3-1:在请求到达具体的Controller接口前,通过aop面向切面编程的方式,获取到请求的url和参数,在白名单里根据优先级依次匹配判断...

【专利技术属性】
技术研发人员:黄明胡成钢
申请(专利权)人:南京焦点领动云计算技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1