1、xss攻击
跨站脚本攻击,指通过用户浏览器运行非法的html或者js的一种攻击。原理是攻击者往web页面里面插入恶意执行的代码,导致用户信息泄漏。
xss攻击又分为两种,非持久性xss攻击和持久性xss攻击。
非持久性xss攻击:点击带有恶意脚本代码的url,当url被打开的时候,脚本执行,造成攻击。这种攻击需要用户点击,不需要服务器存储,直接通过get post 请求就能完成攻击,造成用户信息泄漏。
持久性xss攻击:这种一般存在于Form表单,如文章留言和评论,把恶意脚本提交存到服务器数据库中,当前端把数据渲染的时候造成恶意脚本执行。这种时效性来说,比较持久,会存到数据库中。
防御方法:
csp:
1、建立白名单,开发者告诉浏览器哪些外部资源可以加载和运行。
- 设置 HTTP Header 中的 Content-Security-Policy
- 设置 meta 标签的方式
Content-Security-Policy: default-src 'self' //只允许加载本站资源。
Content-Security-Policy: img-src https://* //只允许加载https的图片。
2、转义字符:
对用户输入的内容进行转义
3、HttpOnly cookie
预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以防止cookie被恶意窃取。
nodejs 设置方法:
res.cookie('isVisit', 1, {maxAge: 60 * 1000, httpOnly: true}) // 该处是设置 cookie 与 httpOnly
2、csrf攻击:
跨站请求伪造,利用用户登录的身份,在用户不知道的情况下,用用户的身份做一些非法操作。
防御方法:
1.不让第三方网站访问到用户cookie
2.设置验证码或者token
3.阻止第三方网站访问接口
对cookie 设置SameSite属性,表示cookie不随着跨域转发。
Refer check:Referer Check在Web最常见的应用就是"防止图片盗链",可以允许哪些域访问
Anti CSRF Token:发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。
3.URL跳转漏洞
攻击者构造恶意链接,让用户点击,造成信息泄漏等
4.sql注入
后端经常遇到的。比如攻击者专门输入 用户名为admin' — 后端的sql语句为:
let querySQL = ` SELECT * FROM user WHERE username='${username}' AND psw='${password}' `;
当用户名为admin' 的时候,sql变为
SELECT * FROM user WHERE username='admin' --' AND psw='xxxx'
后端要控制参数,尽量用?占位符,不要直接使用sql拼接 或者使用mysql.format
对特殊的字符进行转义或者编码处理等
原文链接:https://blog.csdn.net/qq_36770474/article/details/121578960
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18424