文章目录

  • 设置
    • HTTPS
    • 报头(Headers)
  • 密码
  • 身份验证
    • Cookie 中的会话
    • 令牌
    • 会话 vs. 令牌
  • 常见漏洞
    • 跨站脚本攻击(XSS)
    • 跨站请求伪造(CSRF)

作为开发人员,对网络安全都需要有基础的认知。内容不深,都是基础知识,帮助大家温故知新。原文作者以构建一个web应用为基础,梳理了从前到后所会涉及到的网络安全知识。
原文链接:What You Should Know About Web Security

去年年底,我在申请前端和全栈职位时经历了一些编码挑战。虽然细节上有些差别,但任务的主要内容是一样的。令我高兴的是,我确实已经学到了不少东西。在这里,我的目的是记录我在安全方面获得的新知识。
本文主要涵盖了以下内容:

  1. 设置:为 Web 应用程序的安全奠定基础。
  2. 密码:保存秘密。
  3. 身份验证:会话、令牌以及它们的优缺点。
  4. 漏洞:XSS、CSRF 等,以及如何缓解。

由于我主要从事前端和全栈开发工作,所以这些例子都是用 TypeScript 编写的。当然,这些概念是语言无关的。


设置

让我们创建一个可靠的 Express 代码库作为构建基础。

HTTPS

2022 年了,要使用传输层安全(TLS)。免费的,这个安全层可以确保你的网站免受中间人攻击、窃听和篡改。你唯一需要的是一个证书。
对于本地开发,要么创建一个自签名证书,要么使用 lvh.me,后者唯一的工作是将任何请求反射到你自己的 localhost(对于子域名特别方便)。
当你将应用程序托管在外时,所有现代化的服务——Vercel、Netlify、Heroku——都会帮你处理证书。如果你发现自己需要一个证书,Let’s Encrypt 会帮到你,而且是免费的。

报头(Headers)

Express 官方建议,使用 Helmet 对报头做恰当的设置,以防范众所周知的 Web 漏洞。
值得注意的是,Helmet 禁用了 x-powered-b

y(那个泄露应用程序引擎的头字段),启用了 HSTS(告诉浏览器优先选择 HTTPS),并禁用了 MIME 类型嗅探(这很危险,例如,当你正在加载一个文本文件,但你的浏览器认为它是 text/javascript)。如果你想了解所有的细节,可以看看 Helmet 的默认设置。这确实让人感觉很合理。
因此,Express 服务器的基本代码可能会是下面这个样子:

import express from "express";
import fs from "fs";
import helmet from "helmet";
import https from "https";
import path from "path";const app = express();
// avoid having to manually tweak CSP, HSTS, X-Powered-By, MIME-sniffing, etc.; set the strictest CSP possible
app.use(helmet({ contentSecurityPolicy: { directives: { defaultSrc: "'self'" } } }));
app.use(express.json());const client = path.resolve(__dirname, "../build");
if (fs.existsSync(client)) app.use(express.static(client));app.get("/healthz", (_, res) => { res.send({ message: "We're live 												

你还在担心黑客攻击吗?所有程序员都应该掌握的基础网络安全知识,快进来看看吧相关推荐

  1. 还在担心无代码是否威胁程序员饭碗?

    作者 | 伍杏玲 头图 | 下载于视觉中国 出品 | CSDN云计算(ID:CSDNcloud) 近几年来,"低代码/无代码"概念广为热议.然而低代码并不是新鲜词,实则是IT 界对 ...

  2. 关于黑客,距离一个程序员有多远?

    待到秋来九月八,我花开后百花杀 黑客的世界 红客联盟 扫描与嗅探 攻击(Exploit) 永恒之蓝事件 (External Blue ) 渗透测试工具Metasploit 取得控制权 取得Shell ...

  3. Java程序员都30岁了,还剩下5年“寿命”,这就是所谓的中年危机?

    Java程序员都30岁了,还剩下5年"寿命",这就是所谓的中年危机? 30岁时,我是一个程序员,离传说中的"退休"只有5年了,为了优雅从容的所谓"光荣 ...

  4. 40岁的程序员还能找到工作吗_如果程序员已经到三十岁了,那他还能找到满意的工作吗?...

    作为已经快奔四的老程序员,看到话题就想吐槽两句,三十岁的程序员正好是黄金时期,无论从编程经验还是身体状态,都处于一个极佳的状态,虽然程序员喜欢通过互联网的方式吐糟自己,特别是大家都在吐槽程序员都是吃青 ...

  5. 50岁还在写代码,大龄前端程序员到底有多吃香

    大家好呀!我是小千学姐 程序员圈流传着这样一个段子:35岁之后,干前端去送外卖:搞后端去开滴滴:运维就去买保险-- 招人不要35岁的,裁人清理35岁的,不知道什么时候开始,35岁成了职业生涯的拐点,中 ...

  6. 【PyTorch】 99%程序员都不知道, 深度学习还能这样玩 (建议收藏)

    [PyTorch] 99%程序员都不知道, 深度学习还能这样玩 概述 迁移学习 入住 GitHub 项目详解 get_data.py (获取数据) get_model (获取模型) 参数详解 使用说明 ...

  7. 智能好用还免费的修图工具,身边的程序员都悄悄收藏了

    春光明媚,百花盛开,大家有没有去踏青赏花呀!指南君的朋友圈已经有一大波美图上线了,不过美中不足的是经常发现漂亮的花树下人头攒动!作为一枚工具控,指南君决定用技术解决下这个问题,所以跑去研究了下修图工具 ...

  8. 程序员都喜欢抄袭“代码”,而且还拿着高薪?难道就这么无法无天

    说说学编程的一些经验 程序员学的知识分为两种,一种是偏理论的,例如计算机原理,计算机网络.数据库原理.以及操作系统原理,这些知识都是以理论为基础,注重的理解能力. 另一部分主要以实践为主,就是平常当工 ...

  9. 25岁以后还适合花钱学编程,当程序员吗?

    "XX多岁想转行,零基础学编程,来得及吗?能找到好工作吗?"这类问题,总是反复出现.这些问题,根本就没有标准答案. 编程初学者总是在想,万一我学不好怎么办,找不到工作怎么办,担忧太 ...

最新文章

  1. 基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020
  2. 独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)
  3. 组件化 Todo List 编写笔记
  4. 每日一皮:学会说话很重要...
  5. 《微软文档管理解决方案2007》之一:安装部署 - [SharePoint Server]
  6. 把学单片机过程中遇到的问题与大家分享
  7. 无源的nfc加传感_基于ON Semiconductor SPS无源温度标签,应用于冷链运输的 UHF 标签读取器方案...
  8. ssrf漏洞内网渗透_渗透技巧之SSRF
  9. 软件的测试文档,软件-测试文档模版.doc
  10. Python分布式爬虫1
  11. mimes.php,php – Laravel文件上传验证
  12. python朗读文本_python文本操作—读、写
  13. python精彩编程200例-Python趣味编程与精彩实例
  14. tftp服务器权限配置文件,tftp服务器权限配置
  15. 服务器SSH 22端口关闭
  16. 西门子阀门定位器安装教程来啦,不会安装的宝贝们仔细看看咯!
  17. 又拍云php表单,又拍云php版Token授权防盗链整理 - YangJunwei
  18. AndroidStudio安装apk到vivo手机时提示安装失败
  19. 无人驾驶出租车车队长沙惊艳亮相,BIE保驾护航
  20. NASA庆祝地球日:50年地球最精美图片亮相(转载)

热门文章

  1. 云计算究竟有哪些优势
  2. 小时候父亲是座山,我长大后山却垮了
  3. 变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断
  4. python最难的地方_最令人头疼的 Python 问题
  5. 一个恋爱小故事告诉你什么是gRPC?!
  6. VTK从分割好的体数据获取等值面的方法(MarchingCube)
  7. CREATE VIEW
  8. 电脑d盘和e盘不见了怎么恢复?
  9. PDF如何在线转换成PPT呢?
  10. JS高级 之 Proxy-Reflect 使用详解