安全防范------常见的安全问题以及防范

什么是XSS攻击? 如何防范XSS攻击?  什么是CSP?

XSS 简单点说----攻击者想尽一切办法把可执行代码注入到网页中

两种XSS攻击----------持久型 和非持久型

持久型:攻击的代码被服务端写入数据库中(访问数量大的话,导致大量用户都受到攻击)

eg:评论区出现代码,保存到数据库中------用户每次打开页面都会受到攻击

非持久型:危害小于前者 

一般通过修改URL参数的方式加入攻击代码,引导用户访问连接从而进行攻击

eg : 这种攻击Chrome帮助用户防御攻击

两种方式防御XSS攻击

方式一:

1.转义字符:对于用户输入永远不信任---------普遍做法:转义输入输出内容,对引号,尖括号,斜杠转义

通过转义可以将攻击代码  变成


但是对于显示富文本-------不能通过上面方法转义所有字符-------因为这样将格式也会处理掉

2.对于这种情况,通常采用白名单过滤的办法,当然也可以通过黑名单过滤,

但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。

上示例使用了 js-xss 来实现,可以看到在输出中保留了 h1 标签且过滤了 script 标签。

方式二:CSP:本质 就是建立白名单

开发者明确告诉浏览器那些外部资源可加载 执行-------------我们只需要配置规则,如何拦截是浏览器自己实现

以下两种但是开启CSP

1.设置 HTTP Header 中的 Content-Security-Policy

2.设置 meta 标签的方式 


只要开发者配置了正确的规则,那么即使网站存在漏洞,攻击者也不能执行它的攻击代码,并且 CSP 的兼容性也不错。



CSRF攻击

涉及面试题:什么是 CSRF 攻击?如何防范 CSRF 攻击?

CSRF 中文名为跨站请求伪造。原理就是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。如果用户是在登录状态下的话,后端就以为是用户在操作,从而进行相应的逻辑。

eg:网站中通过GET请求,提交用户评论接口-----------------攻击者在钓鱼网站中加入图片,图片地址就是评论接口(post请求也会由这个问题)

防御:1. Get 请求不对数据进行修改

          2. 不让第三方网站访问到用户 Cookie

          3. 阻止第三方网站请求接口

          4.请求时附带验证信息,比如验证码或者 TokenSameSite



点击挟持



中间人攻击



你可能感兴趣的:(安全防范------常见的安全问题以及防范)