web安全机制
⼀、HTTP & HTTPS
⾸先,数据传输是否安全体现为:
1、我发的数据不该看的⼈看不懂
2、我发的数据不该看的⼈不能伪造或修改(修改后接收⽅能察觉)
3、我发的数据,过期之后不该看的⼈不能偷偷拿过来继续⽤
其次,我们来分析HTTP不安全的原因,以及HTTPS安全的原因:
HTTP,全称Hyper Text Transfer Protocol超⽂本传输协议(不安全的协议)
原因:⼀个请求到达最终服务器,中间会经过很多节点(如:路由器、代理服务器、⽹关等),任何请求都可能被途径的众多节点转发,但 http
是明⽂的,所以会导致请求被途径的节点窃听或嗅探等。
HTTPS,全称Hyper Text Transfer Protocol over Secure Layer以安全为⽬标的HTTP通道(安全的协议)
原因:通过 ⾮对称加密 + 对称加密 + CA认证 这三个技术混合在⼀起,使得 https 协议安全。
HTTPS是如何保证安全的?
⼆、XSS攻击
XSS⼜叫CSS(Cross-SiteScripting),跨站脚本攻击。是⼀种⽹站应⽤程序的安全漏洞攻击,是代码注⼊的⼀种。它允许恶意⽤户将代码注⼊
到⽹页上,其他⽤户在观看⽹页时就会受到影响。这类攻击通常包含了HTML以及⽤户端脚本语⾔。
简⽽⾔之,通过客户端脚本语⾔(最常见如:JavaScript)
在⼀个论坛发帖中发布⼀段恶意的JavaScript代码就是脚本注⼊,如果这个代码内容有请求外部服务器,那么就叫做XSS!
三、CSRF攻击
CSRF(Cross-site request forgery),跨站请求伪造。是⼀种挟制⽤户在当前已登录的Web应⽤程序上执⾏⾮本意的操作的攻击⽅法。尽管
听起来像跨站脚本(XSS),但它与XSS⾮常不同,并且攻击⽅法基本相左。XSS利⽤站点内的信任⽤户,⽽CSRF则通过伪装来⾃受信任⽤户的
请求来利⽤受信任的⽹站。
简⽽⾔之,就是冒充⽤户发起请求(在⽤户不知情的情况下),完成⼀些违背⽤户意愿的请求(如恶意发帖,删帖,改密码,发邮件等)。
⼀个⼩故事弄懂CSRF
四、如何防护XSS&CSRF攻击?
中⼼思想:⼀切的⼀切外部来源数据,都要我们服务端代码的过滤,才能让他展⽰到页⾯上,也就是说,⼀切外部数据都是⾮法的,⼀定要做好过
滤。
1、尽量使⽤innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出⽂本内容
2、必须要⽤innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤
3、尽量不要使⽤ eval
4、在输出html时,加上Content Security Policy的Http Header
(作⽤:可以防⽌页⾯被XSS攻击时,嵌⼊第三⽅的脚本⽂件等)
(缺陷:IE或低版本的浏览器可能不⽀持)
5、在设置Cookie时,加上HttpOnly参数
(作⽤:可以防⽌页⾯被XSS攻击时,Cookie信息被盗取,可兼容⾄IE6)
(缺陷:⽹站本⾝的JS代码也⽆法操作Cookie,⽽且作⽤有限,只能保证Cookie的安全)
6、在开发API时,检验请求的Referer参数
(作⽤:可以在⼀定程度上防⽌CSRF攻击)
(缺陷:IE或低版本的浏览器中,Referer参数可以被伪造)
原文链接:https://wenku.baidu.com/view/0024df0d2c60ddccda38376baf1ffc4ffe47e2f5.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18084