首页 黑客接单正文

可以预防XSS的措施(有效防止xss的手段有哪些)

黑客攻击常见的几种方式及预防措施

比较常见的攻击方式:sql注入,xss,弱口令,敏感信息泄露,安全配置错误等,建议参考owasp top 10。

预防:定期检查服务器日志,更改网站管理密码,如有一定代码基础可参考360的网站安全防注入代码进行代码安全控制,对网站目录进行权限控制等,对网站整体安全进行不定期的安全扫描,可使用第三方免费的扫描服务,如百度网站安全检测等,另外可接入第三方云安全服务,对网站进行ip隐藏,注入等防止操作,强烈不推荐服务器安全各类安全软件,导致服务器各种卡死还没有任何作用。网站出问题大部分都是第三方安全软件导致!建议可多去一些安全门户网进行安全知识的普及,推荐两个优秀的安全导航站点:安全圈info,攻防小组导航。强烈推荐。

ps:百度知道手机版竟然无法进行排版,强烈吐槽一波。

如何预防应用程序中的XSS漏洞

试试腾讯电脑管家,杀毒+管理2合1,还可以自动修复漏洞:之一时间发现并修复系统存在的高危漏洞,在不打扰您的情况下自动为系统打上漏洞补丁,轻轻松松将病毒木马拒之门外。自动修复漏洞 电脑管家可以在发现高危漏洞(仅包括高危漏洞,不包括其它漏洞)时,之一时间自动进行修复,无需用户参与,更大程度保证用户电脑安全。尤其适合老人、小孩或计算机初级水平用户使用

web攻击有哪些?怎么防护?

1、DoS和DDoS攻击(DoS(Denial of Service),即拒绝服务,造成远程服务器拒绝服务的行为被称为DoS攻击。其目的是使计算机或 *** 无法提供正常的服务。最常见的DoS攻击有计算机 *** 带宽攻击和连通性攻击)

防范:(1) 反欺骗:对数据包的地址及端口的正确性进行验证,同时进行反向探测。(2) 协议栈行为模式分析:每个数据包类型需要符合RFC规定,这就好像每个数据包都要有完整规范的着装,只要不符合规范,就自动识别并将其过滤掉。(3) 特定应用防护:非法流量总是有一些特定特征的,这就好比即便你混进了顾客群中,但你的行为还是会暴露出你的动机,比如老重复问店员同一个问题,老做同样的动作,这样你仍然还是会被发现的。(4) 带宽控制:真实的访问数据过大时,可以限制其更大输出的流量,以减少下游 *** 系统的压力。

2、CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,但很多开发者对它很陌生。CSRF也是Web安全中最容易被忽略的一种攻击。

防范:(1) 验证码。应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。(2) Referer Check。HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击。正常请求的referer具有一定规律,如在提交表单的referer必定是在该页面发起的请求。所以通过检查http包头referer的值是不是这个页面,来判断是不是CSRF攻击。但在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送referer,服务器就无法进行check了。若与该网站同域的其他网站有XSS漏洞,那么攻击者可以在其他网站注入恶意脚本,受害者进入了此类同域的网址,也会遭受攻击。出于以上原因,无法完全依赖Referer Check作为防御CSRF的主要手段。但是可以通过Referer Check来监控CSRF攻击的发生。(3) Anti CSRF Token。目前比较完善的解决方案是加入Anti-CSRF-Token,即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。这种 *** 相比Referer检查要安全很多,token可以在用户登陆后产生并放于session或cookie中,然后在每次请求时服务器把token从session或cookie中拿出,与本次请求中的token 进行比对。由于token的存在,攻击者无法再构造出一个完整的URL实施CSRF攻击。但在处理多个页面共存问题时,当某个页面消耗掉token后,其他页面的表单保存的还是被消耗掉的那个token,其他页面的表单提交时会出现token错误。

3、XSS(Cross Site Scripting),跨站脚本攻击。为和层叠样式表(Cascading Style Sheets,CSS)区分开,跨站脚本在安全领域叫做“XSS”。

防范:(1) 输入过滤。永远不要相信用户的输入,对用户输入的数据做一定的过滤。如输入的数据是否符合预期的格式,比如日期格式,Email格式, *** 号码格式等等。这样可以初步对XSS漏洞进行防御。上面的措施只在web端做了限制,攻击者通抓包工具如Fiddler还是可以绕过前端输入的限制,修改请求注入攻击脚本。因此,后台服务器需要在接收到用户输入的数据后,对特殊危险字符进行过滤或者转义处理,然后再存储到数据库中。(2) 输出编码。服务器端输出到浏览器的数据,可以使用系统的安全函数来进行编码或转义来防范XSS攻击。在PHP中,有htmlentities()和htmlspecialchars()两个函数可以满足安全要求。相应的JavaScript的编码方式可以使用JavascriptEncode。(3) 安全编码。开发需尽量避免Web客户端文档重写、重定向或其他敏感操作,同时要避免使用客户端数据,这些操作需尽量在服务器端使用动态页面来实现。(4) HttpOnly Cookie。预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。(5)WAF(Web Application Firewall),Web应用防火墙,主要的功能是防范诸如网页木马、XSS以及CSRF等常见的Web漏洞攻击。由第三方公司开发,在企业环境中深受欢迎。

4、SQL注入(SQL Injection),应用程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

防范:(1) 防止系统敏感信息泄露。设置php.ini选项display_errors=off,防止php脚本出错之后,在web页面输出敏感信息错误,让攻击者有机可乘。(2) 数据转义。设置php.ini选项magic_quotes_gpc=on,它会将提交的变量中所有的’(单引号),”(双引号),\(反斜杠),空白字符等都在前面自动加上\。或者采用mysql_real_escape()函数或addslashes()函数进行输入参数的转义。(3) 增加黑名单或者白名单验证。白名单验证一般指,检查用户输入是否是符合预期的类型、长度、数值范围或者其他格式标准。黑名单验证是指,若在用户输入中,包含明显的恶意内容则拒绝该条用户请求。在使用白名单验证时,一般会配合黑名单验证。

5、上传漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。该漏洞允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。

防范: (1)检查服务器是否判断了上传文件类型及后缀。 (2) 定义上传文件类型白名单,即只允许白名单里面类型的文件上传。 (3) 文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。 Info漏洞 Info漏洞就是CGI把输入的参数原样输出到页面,攻击者通过修改输入参数而达到欺骗用户的目的。

Web前端新手应该如何防御XSS攻击

今天小编要跟大家分享的文章是关于Web前端新手应该如何防御XSS攻击。作为 *** 系工程师接触最多的漏洞我想就是XSS漏洞了,然而并不是所有的同学对其都有一个清晰的认识。今天我们分享一下XSS漏洞攻击,希望能帮助到大家。下面我们来一起看一看吧!

一、什么是XSS攻击

XSS(Cross-SiteScripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的。

常见的XSS攻击有三种:反射型、DOM-based型、存储型。其中反射型、DOM-based型可以归类为非持久型XSS攻击,存储型归类为持久型XSS攻击。

1、反射型

反射型XSS一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。

对于访问者而言是一次性的,具体表现在我们把我们的恶意脚本通过URL的方式传递给了服务器,而服务器则只是不加处理的把脚本“反射”回访问者的浏览器而使访问者的浏览器执行相应的脚本。反射型XSS的触发有后端的参与,要避免反射性XSS,必须需要后端的协调,后端解析前端的数据时首先做相关的字串检测和转义处理。

此类XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端Cookies或进行钓鱼欺骗。

整个攻击过程大约如下:

2、DOM-based型

客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。例如客户端如从URL中提取数据并在本地执行,如果用户在客户端输入的数据包含了恶意的JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到DOM-basedXSS攻击。需要特别注意以下的用户输入源document.URL、location.hash、location.search、document.referrer等。

整个攻击过程大约如下:

3、存储型

攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。

存储型XSS一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

整个攻击过程大约如下:

二、XSS攻击的危害

XSS可以导致:

1、攻击劫持访问;

2、盗用cookie实现无密码登录;

3、配合csrf攻击完成恶意请求;

4、使用js或css破坏页面正常的结构与样式等;

三、防御 ***

1、XSS防御之HTML编码

应用范围:将不可信数据放入到HTML标签内(例如div、span等)的时候进行HTML编码。

编码规则:将"'/转义为实体字符(或者十进制、十六进制)。

示例代码:

_unction_ncodeForHTML(str,_wargs){

__return(''+_tr)

___.replace(//g,'')

___.replace(/,'')__//_EC=_EX=_ntity=

___.replace(//g,'')

___.replace(/"/g,'"')

___.replace(/'/g,''')_//'_煌萍觯蛭辉_TML规范中

___.replace(/\//g,'/');

_};

HTML有三种编码表现方式:十进制、十六进制、命名实体。例如小于号(

2、XSS防御之HTMLAttribute编码

应用范围:将不可信数据放入HTML属性时(不含src、href、style和事件处理属性),进行HTMLAttribute编码

编码规则:除了字母数字字符以外,使用HH;(或者可用的命名实体)格式来转义ASCII值小于256所有的字符

示例代码:

_unction_ncodeForHTMLAttibute(str,_wargs){

__let_ncoded='';

__for(let_=0;____let_h=_ex=_tr[i];

___if(!/[A-Za-z0-9]/.test(str[i])_tr.charCodeAt(i)____hex=''+_h.charCodeAt(0).toString(16)+';';

___}

___encoded+=_ex;

__}

__return_ncoded;

_};

3、XSS防御之JavaScript编码

作用范围:将不可信数据放入事件处理属性、JavaScirpt值时进行JavaScript编码

编码规则:除字母数字字符外,请使用xHH格式转义ASCII码小于256的所有字符

示例代码:

_unction_ncodeForJavascript(str,_wargs)_

__let_ncoded='';

__for(let_=0;____let_c=_ex=_tr[i];

___if(!/[A-Za-z0-9]/.test(str[i])_tr.charCodeAt(i)____hex='\\x'+_c.charCodeAt().toString(16);

___}

___encoded+=_ex;

__}

__return_ncoded;

_};

4、XSS防御之URL编码

作用范围:将不可信数据作为URL参数值时需要对参数进行URL编码

编码规则:将参数值进行encodeURIComponent编码

示例代码:

_function_ncodeForURL(str,_wargs){

__return_ncodeURIComponent(str);

_};

5、XSS防御之CSS编码

作用范围:将不可信数据作为CSS时进行CSS编码

编码规则:除了字母数字字符以外,使用XXXXXX格式来转义ASCII值小于256的所有字符

示例代码:

_unction_ncodeForCSS(attr,_tr,_wargs){

__let_ncoded='';

__for(let_=0;____let_h=_tr.charAt(i);

___if(!ch.match(/[a-zA-Z0-9]/)_

____let_ex=_tr.charCodeAt(i).toString(16);

____let_ad='000000'.substr((hex.length));

____encoded+='\\'+_ad+_ex;

___}_lse_

____encoded+=_h;

___}

__}

__return_ncoded;

_};

后记

在任何时候用户的输入都是不可信的。对于HTTP参数,理论上都要进行验证,例如某个字段是枚举类型,其就不应该出现枚举以为的值;对于不可信数据的输出要进行相应的编码;此外httpOnly、CSP、X-XSS-Protection、SecureCookie等也可以起到有效的防护。

XSS漏洞有时比较难发现,所幸当下React、Vue等框架都从框架层面引入了XSS防御机制,一定程度上解放了我们的双手。

但是作为开发人员依然要了解XSS基本知识、于细节处避免制造XSS漏洞。框架是辅助,我们仍需以人为本,规范开发习惯,提高Web前端安全意识。

以上就是小编今天为大家分享的关于Web前端新手应该如何防御XSS攻击的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助。想要了解更多web前端相关知识记得关注北大青鸟web培训官网。最后祝愿小伙伴们工作顺利!

作者:公子

链接:#/a/1190000017057646

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。