常见的WEB安全及防护
CIA知道么 ?
- 机密性(Confidentiality)
- 完整性(Integrity)
- 可用性(Availiability)
常见的web攻击有 XSS ,CSRF;
xss 到底是什么 ?
黑客在你的浏览器中插入一段恶意JS脚本,窃取你的隐私信息【这里泛指cookie登录信息】,冒充你的身份进行操作,这就是XSS攻击(Cross-Site-Scripting,跨站脚本攻击)。补充一下,为什么不叫CSS,是因为CSS是重叠样式,为了有所区别,即XSS。
XSS的类型有哪些 ?
- 发射型XSS(非持久型)
- 基于DOM的XSS
- 存储型XSS(持久性)
- 反射型
恶意JS脚本属于用户发送给网站请求中的一部分,随后网站又将这些部分返回给用户,恶意脚本在页面中被执行,一般发生在前后端一体的应用中,服务端逻辑会改变最终的网页代码。
- 基于DOM型
目前更流行前后端分离的项目,反射型XSS无用武之地,但这种攻击不需要经过服务器,网页本身的JS也是可以改变HTML,黑客正是利用这一点来实现的插入恶意脚本。
- 存储型
持久型XSS,黑客将恶意JS脚本长期保存在服务端数据库,用户一旦访问相关页面数据,恶意脚本就会被执行,常见于搜索,微博,社区贴吧评论等。
XSS攻击的结果是什么 ?
- 盗取用户cookie
- 未授权操作
- 修改DOM
- 刷浮窗广告
- 发动XSS蠕虫攻击
- 劫持用户行为,进一步渗透内网
如何防护XSS攻击:
- 一切用户输入皆不可信,在输出时进行验证
- 将HTML元素内容,属性以及URL请求参数,css值编码
- 当编码影响业务时,使用白名单规则进行检测和过滤
- 使用W3C提出的CSP(内容安全策略),定义域名白名单
- 设置cookie的httpOnly属性
CSRF攻击是什么 ?
英文全称是Cross-Site-Request-Forgery 即 跨站请求伪造,顾名思义 CSRF攻击就是黑客引诱用户打开黑客的网站,利用用户的登录状态发起跨站请求。
降维解释: 攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求,利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户被攻击的网站执行某项操作的目的。
CSRF攻击的实现方式:
- 最容易实现的是GET请求,一般进入黑客网站后,可以通过设置 img 的 src属性来自动发起请求。
- 在黑客网站中,构造隐藏表单来自动发起POST请求。
- 通过引诱链接诱惑用户点击触发请求,利用 a 标签 href。
如何防范CSRF攻击:
- 针对实际情况,设置 Cookie 的 SameSite 属性为 Strict 或 Lax。
- 服务端验证请求来源(Referer,Origin)。
- 使用CSRF Token ,服务端随机生成返回给浏览器的Token。
- 加入二次验证(独立的支付密码)。
CSRF 与 XSS 有什么区别:
CSRF攻击不需要将恶意代码注入用户页面,仅仅是利用服务端的漏洞, 和用户的登录状态来实施攻击。
CSRF攻击成本比XSS低,用户每天都要访问大量网页,无法确定每一个网页的合法性,从用户的角度来说,无法彻底防止CSRF攻击。
最后说两个加密算法:
- 对称加密算法
对称加密算法就是加密和解密使用同一个秘钥,简单粗暴。
常见经典对称加密算法有 DES,AES,IDEA,国密 SM1,国密SM4。
- 非对称加密算法
非对称加密就是加密和解密使用不同的秘钥,发送方使用公钥对信息加密,接收方收到密文后,使用私钥解密,主要解决了密钥分发的难题。
签名就是私钥加密
经典非对称加密算法有 RSA,ECC和SM2。