Web安全与防护

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Web安全与防护

1. SQL 注入

1.1 介绍

例如做一个系统的登录界面,输入用户名和密码,提交之后,后端直接拿到数据就拼接 SQL 语句去查询数据库。如果在输入时进行了恶意的 SQL 拼装,那么最后生成的 SQL 就会有问题。

比如后端拼接的 SQL 字符串是:

SELECT * FROM user WHERE username = 'user' AND password = 'pwd';

如果不做任何防护,直接拼接前端的字符,就会出现问题。比如前端传来的user字段是以'#结尾,password随意:

SELECT * FROM user WHERE username = 'user'#'AND password = 'pwd';

密码验证部分直接被注释掉了

1.2 防范

后端应该对于字符串有转义,可以借助成熟的库的 API 来拼接命令,而不是自己手动拼接。

2. XSS:跨站脚本攻击

2.1 介绍

原理上就是黑客通过某种方式(发布文章、发布评论等)将一段特定的 JS 代码隐蔽地输入进去。然后别人再看这篇文章或者评论时,之前注入的这段 JS 代码就执行了。JS 代码一旦执行,那可就不受控制了,因为它跟网页原有的 JS 有同样的权限,例如可以获取 server 端数据、可以获取 cookie 等。

比如早些年社交网站经常爆出 XSS 蠕虫,通过发布的文章内插入 JS,用户访问了感染不安全 JS 注入的文章,会自动重新发布新的文章,这样的文章会通过推荐系统进入到每个用户的文章列表面前,很快就会造成大规模的感染。

2.2 防范

前端对用户输入内容进行验证,如果有风险,就进行替换。例如:& 替换为 &

3. CSRF: 跨站请求伪造

3.1 介绍

CSRF 是借用了当前操作者的权限来偷偷地完成某个操作,而不是拿到用户的信息。比如获取cookie、破解token加密等等。

3.2 防范

  • 敏感数据不使用GET
  • 前后端约定加密方式和密钥,并且经常更新密钥
  • 对 IP 限制一定时间内的访问次数
  • 设置网站白名单

4. 中间人攻击

4.1 原理和防范

它也被称为浏览器劫持、web 劫持。可以往 web 中添加一些第三方厂商的 dom 元素,或者重定向到另外的钓鱼站。

常用手段有 2 种:

  1. 网络报文传输过程中对其截获、篡改(过程中)
  2. 客户端发起 http 请求之前或者得到 response 之后对数据篡改(开头、结尾)

防范方式就是使用 https 协议,一套在传输层 TCP 和应用层 HTTP 之间的 TLS 协议。

4.2 https 交互细节

以下内容摘自:《深入理解 Web 安全:中间人攻击》

简单地说,一次 https 网络请求在建立开始阶段具有以下的一个“握手”流程:

首先,客户端向服务端发起一个基于 https 协议的网络请求,这相当于告诉它:“我希望得到一个安全加密的网页,你可别直接把明文扔过来!”

服务端接收到这个网络请求后,了解到客户端的提出的这种加密的诉求,于是先把一个公钥和网站的 https 证书发送给客户端。

客户端随后要做两件事,一是验证证书的合法性与时效性,如果颁发证书的机构客户端这边不承认或者证书中标明的过期时间已经过了,这都会导致客户端浏览器报出那个红叉子,chrome 浏览器还会直接拦截掉这个请求,除非用户点详情->继续,否则不会与该网站的服务器进行后续沟通,这相当于一个强交互的提醒,告诉用户“我拿到的证书有问题,这网站可能是个冒牌货,你要看仔细了!”

如果以上两步验证无误,那么客户端会先生成一个随机秘钥,利用刚刚拿到的公钥给自己要访问的 url+这个随机秘钥进行加密,把密文再次发往服务端。

当服务端收到客户端传过来的密文之后,会通过自己手里持有的一个私钥对密文进行解密。_注意,这里提到的私钥和刚刚的公钥是一对儿秘钥,这是一个典型的非对称加密,加密和解密分别使用两把不同的钥匙,这也保证了在此场景下的安全性。_

此时,服务端要将真正的 html 网页文本发给你了,它会利用解密得到的随机秘钥对网页文本内容进行加密,将密文发给客户端。

客户端拿到真正的 html 报文之后,就用自己刚才生成的那个随机秘钥进行解密,然后就得到了跟普通 http 请求时一样的一个网页文本了,在这之后就像往常那样解析、渲染、加载更多资源……

对于真正要传输的 html 文本,实际上是使用刚刚提到的这个随机秘钥进行了一次对称加密,因为上锁和开锁的钥匙实际上是一模一样的。

5. DDoS

攻击者在短时间内发起大量请求,利用协议的缺点,耗尽服务器的资源,导致网站无法响应正常的访问。

我之前也经历过,在这篇《被 DDos 后的及时补救与一些思考》

防范的措施,或者称之为补救措施更合适,有以下建议:

  1. 借助云厂商 CDN:静态流量的资源还得自己掏钱
  2. IP 黑/白名单:nginxapache 都可以设置
  3. HTTP 请求信息:根据 UserAgent 等字段的信息
  4. 静态化:博客网站直接挂在 github 等平台上
  5. 备份网站:阮一峰老师的网站被 ddos 的时候就有个备份页面
  6. 其他:弹性 ip、免费的 DNSpod、国内外分流、高防 ip 等等

6. 点击劫持

点击劫持是一种视觉欺骗的攻击手段。攻击者通过 iframe 嵌套嵌入被攻击网页,诱导用户点击。如果用户之前登陆过被攻击网页,那么浏览器可能保存了信息,因此可以以用户的身份实现操作。

js 防范手段:

<head>
  <style id="click-jack">
    html {
      display: none !important;
    }
  </style>
  <script>
    // 判断当前页面是否是iframe加载
    if (self === top) {
      const style = document.getElementById("click-jack");
      document.body.removeChild(style);
    } else {
      top.location = self.location;
    }
  </script>
</head>
相关文章
|
21天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
39 1
|
24天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
63 4
|
23天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
50 2
|
25天前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
57 3
|
27天前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
33 1
|
1月前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
48 3
|
1月前
|
缓存 安全 JavaScript
掌握JAMstack:构建更快、更安全的Web应用
JAMstack 是一种现代 Web 开发架构,结合 JavaScript、APIs 和 Markup,创建更快、更安全的 Web 应用。其核心优势包括高性能、安全性、可扩展性和易维护性。JAMstack 通过预构建静态页面和 API 实现高效渲染,利用静态站点生成器如 Gatsby 和 Next.js,并借助 CDN 和缓存策略提升全球访问速度。尽管面临复杂交互、SEO 和数据更新等挑战,但通过 Serverless Functions、预渲染和实时 API 更新等方案,这些挑战正逐步得到解决。
|
2月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
134 5
|
2月前
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
439 2
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
70 5
下一篇
无影云桌面