浏览器的安全
1.首先有xss 还有csrf攻击
xss攻击 是一种跨站脚本攻击 :
它是利用 黑客利用页面注入js脚本,然后用户浏览页面中,对用户实施攻击的一种手段,
csrf 攻击是一种跨域请请求伪造攻击:
他通过用户的登录态,然后实施攻击的一种操作
XSS 可以分为多种类型,但是总体上我认为分为两类:持久型和非持久型。
持久型也就是攻击的代码被服务端写入进数据库中,这种攻击危害性很大,因为如果网站访问量很大的话,就会导致大量正常访问页面的用户都受到攻击。
非持久型相比于前者危害就小的多了,一般通过修改 URL 参数的方式加入攻击代码,诱导用户访问链接从而进行攻击。
防御xss攻击
1、首先我们可以通过对 用户输入或者说浏览的那个链接做一个过滤和转码
2、我们可以充分的利用csp的内容安全策略
CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻击。
通常可以通过两种方式来开启 CSP:
- 设置 HTTP Header 中的 Content-Security-Policy
- 设置 meta 标签的方式
HTTP Header 举例
-
只允许加载本站资源
Content-Security-Policy: default-src ‘self’ -
只允许加载 HTTPS 协议图片
Content-Security-Policy: img-src https://* -
允许加载任何来源框架
Content-Security-Policy: child-src 'none'
3、我们还可以通过cookie的httponly这个属性禁止js脚本
4、我们还可以通过验证码的方式验证用户的提交
5、通过限制用户的输入的长度,因为js脚本一般都是比较长的。
cookie 中的 httponly属性
httponly顾名思义就是只能通过http来访问 ,来访问cookie, 这样的话就可以禁止
这js通过,这样就访问不到 document.cookie
防止csrf攻击
1 可以通过cookie中samesite属性,可以限制第三方 域一个第三个域发送请求。
可以对 Cookie 设置 SameSite 属性。该属性表示 Cookie 不随着跨域请求发送,可以很大程度减少 CSRF 的攻击,但是该属性目前并不是所有浏览器都兼容。
2、通过那个请求头那个origin的信息来验证我们的请求来源
3。可以通过csrftoken 然后来验证这个用户的合法性 ,请求合法性