全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

31 | 防人之心不可无:网站安全问题窥视

防范措施
攻击原理
解决方案
攻击原理
解决方案
攻击原理
防御策略
攻击原理
防御策略
攻击原理
防御策略
攻击原理
用户对特定资源的操作权限
多因子鉴权
HTTPS通信中的密钥鉴别
用户身份鉴别
DDoS攻击的分类
SQL的参数化查询
HTTP的Referer头
HttpOnly标识
网上支付功能的安全措施
验证码的应用
DDoS攻击
DNS劫持
HTTP劫持
SQL注入
CSRF
XSS
授权
鉴权
扩展阅读
总结思考
常见的Web攻击方式
鉴权和授权
网站安全问题窥视

该思维导图由 AI 生成,仅供参考

你好,我是四火。
今天,我们来学习一些网站安全的基础知识。作为一名 Web 全栈工程师,不可避免地会经常性地面对网站安全的问题,因此有关安全的学习是十分必要的。这一讲我们就来看一些常见的安全问题,并了解它们相应的解决办法,加强安全意识。

鉴权和授权

我把这两个概念的比较放在开头,是因为这两个概念有相关性且很常用,还有就是这二者太容易被混用了,但是实际上,它们却又是大不相同的。鉴权,Authentication,指的是对于用户身份的鉴别;而授权,Authorization,指的是允许对于特定资源的指定操作。
我们可以借助具体的例子来深入了解。
先说说鉴权。网站的登录系统,输入正确的用户名和密码以便登陆,这个过程就是一个鉴权参与的过程。输入了正确的用户名和密码,系统就能够确认用户的身份,鉴权也就成功了。再比如我们在 [第 02 讲] 中介绍的 HTTPS 通信,其中的密钥也是起到了“鉴别身份”的作用,这个起作用的过程也属于鉴权。
为了安全考虑,在实际应用中鉴权有时不是靠“单因子”(Single-Factor)就够了的,我们还会采用“多因子”(Multi-Factor)的方式。
举个例子,银行转账的时候,你光输入账号和转账密码,这是属于单因子,一般是不够的,还必须有其它的因子,比如说 U 盾等等。多个因子之间一般要求是独立的,无依赖关系。再比如说,你通过电话去办理通讯业务的时候,有时候为了证明你的身份,你会被要求提供 PIN 或者密码以外的其他“个人信息”,像是说出最近三次通话的电话号码,这些方式,都是为了增加“鉴权因子”的种类,从而提高安全级别。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了网站安全的基础知识,重点关注了鉴权和授权的概念以及常见的Web攻击方式。在鉴权和授权方面,文章强调了它们的相关性和区别,以及在实际应用中的重要性。针对常见的Web攻击方式,文章详细介绍了XSS(跨站脚本攻击)的原理和防御方法。通过具体的例子和图示,读者可以清晰地了解攻击者如何利用恶意脚本获取用户的Cookie,以及如何通过字符转义和控制Cookie的作用范围来防御XSS攻击。此外,文章还涵盖了CSRF(跨站请求伪造)、SQL注入和HTTP劫持等攻击方式的原理和防范策略。总体而言,本文以简洁清晰的语言,深入浅出地介绍了网站安全的基础知识和常见攻击方式,适合Web全栈工程师和对网站安全感兴趣的读者阅读学习。值得一提的是,本文还强调了在防范CSRF的情况下,必须首先确保没有XSS的问题,因为一旦用户的会话以XSS的方式被劫持,所有的CSRF的防御就失去了意义。对于HTTP劫持,最理想的解决方案是将网站切换为HTTPS。文章还介绍了DNS劫持和DDoS攻击的原理及防范措施。DNS劫持会引导用户到恶意网站,而DDoS攻击则通过洪峰请求使服务崩溃。对于DDoS攻击,需要整个网络链路配合,采取入侵检测和流量过滤等多种方式来联合防范。文章最后提出了两个问题,引发读者思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • tt
    XSS和CSRF都和身份有关系,前者是劫持了某个身份,后者是假冒了某个身份。而手工输入验证码实在鉴权之前发生的,一个验证码正确不能说明任何身份信息,只能说明在网站活动的实体是一个具有识别验证码的对象,这个对象可能是人。好像叫“图灵测试”还是什么来着。 提交信用卡信息,有两个方面需要考虑,一个是信息的保密性,这个应该要依靠加解密来实现;第二个是要实现不可抵赖性,即确保这个行为是真实的用户发出的真实的请求,即第一要防止XSS,即身份被冒用;第二要防止CSRF,即行为被仿造。像老师课里讲到的,利用TOKEN信息,这个TOKEN也可以来自永和的电子令牌或U盾,做到防抵赖等。 最后,用户也要验证服务提供者的身份,这就需要HTTPS了。但是如果DNS被劫持,确实不好办,最近我们另外一个项目遇到了这个问题,但是客户端也不支持HTTP-DNS。

    作者回复: 👍

    2019-11-20
    2
    5
  • leslie
    这块刚好是欠缺的关于安全方面的。下面是对于今天2个问题的个人理解 1.短信验证:短信验证应当是防范了XSS攻击。 2.支付系统:多种攻击都应当要防范,支付可能是直接的网络密码支付或者密码支付;我觉得以下几种方式都要防御;XSS、SQL注入、DNS以及DDOS攻击。 如果可以的话希望老师可以适当补充这块的知识或书籍资料;其实在现在而言 ,这个大概是每个IT人员都应当有的常识。谢谢老师今天的分享,期待老师后续的分享。

    作者回复: 你讲的短信验证是验证码中的特殊一种,它不但能确定对方“是真实的”,而不是机器,还能验证对方的身份,它比普通的验证码要麻烦,但是可以防范更多的攻击方式,所以你可以多想一想,再补充。 对于扩展阅读,因为这篇已经有 4 条了,考虑接受程度和需要的时间成本,除非有我认为特别好的材料,一般就不再增加了。但是安全方面的学习材料互联网上很多,我相信你也可以找得到。

    2019-11-20
    1
  • Geek_89bbab
    DNS劫持后,如果用户没有注意到,然后在假冒网站中输入用户名密码,是不是用户名密码就泄漏了? 针对这种情况,有什么好的方案或者建议呢?

    作者回复: 1) 对,有些银行卡信息就是这样泄露的。俗称“钓鱼” 2) DNS劫持的防范一般比较复杂,需要整个链路的配合,包括DNS服务提供商,现在有的浏览器支持的HTTPS加密的DNS,就是针对这个事情而设计的,参见 https://zh.wikipedia.org/wiki/DNS_over_HTTPS

    2020-06-14
  • 丁丁历险记
    小公司,遭遇过一次30G 流量的ddos ,直接被机房叫去约谈,各种理由停我们的服务。 那次后,果断上云了。

    作者回复: 👍

    2019-11-28
    2
  • 靠人品去赢
    这例子想当给劲了,没想到老师也去V2摸鱼。

    作者回复: :) V2 这张图是个巧合。我想找一张 HTTP 劫持的图片,搜了一些,大多数都不太适合,这张算是相对来说比较适合的。

    2019-11-26
  • 八哥
    用户登录信息,加密和https。涉及到用户敏感数据,脱敏显示都是安全措施
    2020-02-26
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部