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参数可以被伪造)

你可能感兴趣的:(web安全机制)