开发者必读篇之Web漏洞防护指南

web的发展史

早期的互联网非常的单调,一般只有静态页面,现在,随着技术的发展,web上大多数站点实际上是web应用程序,在服务器和浏览器之间进行双向的信息传递。他们支持注册登录,金融交易,搜索及用户创作的内容。用户只需要拥有一个浏览器,就能实现各种功能。

Web是指一个网站的前端页面到后端服务,比如我们常见的 Javascript、PHP、Python、Mysql、jQuery、Docker 等,包括开发、运维这些服务。

所以在我看来 Web 安全也就是从安全的角度探索 Web 的一种方式。

拓展阅读:

《彻底理解cookie、session、token》

https://mp.weixin.qq.com/s/ow6CryxVrkeU79GD857d1w

web 请求的过程

作者:二向箔安全 链接:https://www.zhihu.com/question/21606800/answer/219614097

  1. 浏览器:浏览器即客户端,提供客户端和服务器端的数据信息交互。
  2. http:客户端与web服务器进行交互时就存在Web请求,这种请求都基于统一的应用层协议——HTTP协议来交互数据。http属于轻量级协议,无需连接,提供了对通信错误的容错性。
  3. 中间件:中间件是位于平台(硬件和操作系统)和应用之间的通用服务
  4. Server容器:Server容器负责解析用户请求和脚本语言,类似的有Tomcat,JBoss等。我们访问网页看到是web容器处理后的内容。
  5. 数据库:动态页面可提供交互式的信息查询服务,主要依赖于Web数据库的实现,对外提供包含 表单的Web页面作为访问接口,查询结果也以包含数据列表的Web页面形式返回给用户。

当然除了这些数据也有可能流向不些不可见的第三方服务商。

拓展阅读:

数据流中,有个关键的是HTTP协议,从上到下→从下到上的头尾两端(即请求响应),搞通!推荐阅读《HTTP权威指南》,零基础入门的同学,推荐《图解HTTP》,从基础知识到最新动向,172张图解轻松入门。

主流Web漏洞

本文主要讨论以下几种攻击方式: SQL 注入、XSS攻击、CSRF攻击、URL跳转漏洞。

SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

原因:

当使用外部不可信任的数据作为参数进行数据库的增、删、改、查时,如果未对外部数据进行过滤,就会产生 SQL 注入漏洞。(如下图所示)

①通过检查Web页而上存在的SQL注入漏洞,构建特殊的SQL注入点;

②其次通过这些特殊的注入点利用Web页而动态传递参数的功能,将SQL的语法组合动态传递给数据库;

③然后根据数据库的不同类型,对数据库采取不同的处理;

④最后执行SQL语句,从而达到攻击者想要的目的。

解决方案:

具体的解决方案很多,但大部分都是基于一点:不信任任何外部输入。

所以,对任何外部输入都进行过滤,然后再进行数据库的增、删、改、查。

此外,适当的权限控制、不曝露必要的安全信息和日志也有助于预防 SQL 注入漏洞。

参考《Web安全漏洞之SQL注入 - 防御方法》

(https://juejin.im/post/5bd5b820e51d456f72531fa8#heading-2)了解具体的解决方案。

拓展阅读:

《Web 安全漏洞之 SQL 注入》

https://juejin.im/post/5bd5b820e51d456f72531fa8

《SQL 注入详解》

https://segmentfault.com/a/1190000007520556

XSS攻击

XSS则是攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

原因:

当攻击者通过某种方式向浏览器页面注入了恶意代码,并且浏览器执行了这些代码。数据流程如下:

恶意用户的Html输入——>Web程序——>进入数据库——>Web程序———>用户浏览器

解决方案:

一个基本的思路是渲染前端页面(不管是客户端渲染还是服务器端渲染)或者动态插入 HTML 片段时,任何数据都不可信任,都要先做 HTML 过滤,然后再渲染。

参考《前端安全系列(一):如何防止XSS攻击? - 攻击的预防》(https://segmentfault.com/a/1190000016551188#articleHeader7)了解具体的解决方案。

拓展阅读:

《前端安全系列(一):如何防止XSS攻击?》

https://segmentfault.com/a/1190000016551188

《前端防御 XSS》

https://juejin.im/entry/56da82a87664bf0052ebad41

《浅说 XSS 和 CSRF》

https://juejin.im/entry/5b4b56fd5188251b1a7b2ac1

CSRF攻击

CSRF 攻击全称跨站请求伪造(Cross-site Request Forgery),攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

原因:

典型的CSRF攻击流程:

  • 受害者登录A站点,并保留了登录凭证(Cookie)。
  • 攻击者诱导受害者访问了站点B。
  • 站点B向站点A发送了一个请求,浏览器会默认携带站点A的Cookie信息。
  • 站点A接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是无辜的受害者发送的请求。
  • 站点A以受害者的名义执行了站点B的请求。
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者完成了攻击。

注:上面的过程摘自《前端安全系列之二:如何防止CSRF攻击?》(https://segmentfault.com/a/1190000016659945)。

解决方案:

防止 CSRF 攻击需要在服务器端入手,基本的思路是能正确识别是否是用户发起的请求。

参考《前端安全系列之二:如何防止CSRF攻击? - 防护策略》(https://segmentfault.com/a/1190000016659945#articleHeader4)了解具体的解决方案。

拓展阅读:

《前端安全系列之二:如何防止CSRF攻击?》

https://segmentfault.com/a/1190000016659945

《Web安全漏洞之CSRF》

https://juejin.im/post/5ba1a800e51d450e8657f5dd

《浅说 XSS 和 CSRF》

https://juejin.im/entry/5b4b56fd5188251b1a7b2ac1

URL跳转漏洞

URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,导致用户浏览器跳转到钓鱼页面的一种漏洞。

URL跳转一般有以下几种实现方式:Header头跳转、Javascript跳转、META标签跳转。

原因:

URL跳转漏洞的出现场景还是很杂的,出现漏洞的原因大概有以下5个:

  • 写代码时没有考虑过任意URL跳转漏洞,或者根本不知道这是个漏洞;
  • 写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
  • 对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
  • 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
  • 原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致被绕过;

解决方案:

预防这种攻击的方式,就是对客户端传递过来的跳转 URL 进行校验。

1.referer的限制

如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接。

2.加入有效性验证Token

保证所有生成的链接都是来自于可信域,通过在生成的链接里加入用户不可控的token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用。

原文地址:https://www.cnblogs.com/CQqf2019/p/11112461.html

时间: 2024-08-11 04:49:12

开发者必读篇之Web漏洞防护指南的相关文章

黑客攻防技术宝典Web实战篇(二)工具篇DVWA Web漏洞学习

DVWA是一个学习Web漏洞的很好的工具. DVWA全程是Damn Vulnerable Web Application,还有一个跟它一样好的工具尽在http://www.360doc.com/content/13/0614/22/11029609_292922372.shtml 下载地址:http://www.dvwa.co.uk/ 安装教程:http://www.cnblogs.com/yaochc/p/5049832.html 声明:下面的示例都是在DVWA Security为Low时发生

web之困:现代web应用安全指南

<web之困:现代web应用安全指南>在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客.国际一流安全专家撰写,是目前唯一深度探索现代web浏览器安全技术的专著.本书从浏览器设计的角度切入,以探讨浏览器的各主要特性和由此衍生出来的各种安全相关问题为主线,深入剖析了现代web浏览器的技术原理.安全机制和设计上的安全缺陷,为web安全工作者和开发工程师们应对各种基于浏览器的安全隐患提供了应对措施. <w

web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,JS前端实用开发QQ群 :147250970 欢迎加入~! 目录(?)[+] hi,大家好! 我的第一篇文章:[web前端到底是什么?有前途吗?],在我没想到如此 ‘HOT’ 的情况下 得到很多好评和有效传播. 也为我近期新开的 个人前端公众号:前端你别闹(webunao) 直接增加了几百粉(果然,帅

Web API 入门指南 - 闲话安全

参考页面: http://www.yuanjiaocheng.net/Spring/first.html http://www.yuanjiaocheng.net/entity/modelbrowser.html http://www.yuanjiaocheng.net/entity/dbcontext.html http://www.yuanjiaocheng.net/mvc/first.html http://www.yuanjiaocheng.net/webapi/first.html W

Java开发者必读的5本最佳Hibernate书籍

Java开发者必读的5本最佳Hibernate书籍 分享到:17 本文由 ImportNew - will 翻译自 javarevisited.欢迎加入Java小组.转载请参见文章末尾的要求. Hibernate是最受欢迎的开源ORM(Object Relational Mapping 对象关系映射)框架之一,并且随着JPA的出现,它已成为开发Java企业级应用持久层的一个标准.我经常会收到这样一些反馈,如”哪本是学习hibernate最好的书籍”或”请推荐一些学习Spring和Hibernat

《开发者必读的10本免费电子书》

<开发者必读的10本免费电子书> 下面我为开发者提供了一个书籍列表,内容涵盖JavaScript.Python.HTML等.此书籍列表既适合开发者,又适合设计师.希望你能从中获得收益.这些免费书都是由O'Reilly出版社提供的. 1.<Programming JavaScript Applications> 在线阅读地址:http://chimera.labs.oreilly.com/books/1234000000262/index.html 2.<Test-Driven

[网站安全] [实战分享]WEB漏洞挖掘的一些经验分享

WEB漏洞有很多种,比如SQL注入,比如XSS,比如文件包含,比如越权访问查看,比如目录遍历等等等等,漏洞带来的危害有很多,信息泄露,文件上传到GETSHELL,一直到内网渗透,这里我想分享的最主要的是SQL注入,因为尽管过去了很多年,SQL注入依然是现在最大的一个问题,我们打开wooyun,看看已经注册的乌云厂商,其中能看到厂商漏洞分布的一个饼状图,其中占领面积最大的就是SQL注入,那么SQL注入带来的危害有很多了,比如最后的GETSHELL,比如百万级用户信息泄露的基础都是SQL注入,我接触

IPS(入侵防护系统)与WAF(Web应用防护系统)的区别

IPS(入侵防护系统)和WAF(Web应用防护系统)两款产品有不同的使用场景,随着Web应用发展带来的复杂度,对安全性要求也日趋增高,Waf的出现是顺应了市场和技术的需要. Web应用防护无疑是一个热门话题.由于技术的发展成熟和人们对便利性的期望越来越高,Web应用成为主流的业务系统载体.在Web上"安家"的关键业务系统中蕴藏的数据价值引起攻击者的青睐,网上流传的Web漏洞挖掘和攻击工具让攻击的门槛降低,也使得很多攻击带有盲目和随机性.比如利用GoogleHacking原理的批量查找具

WEB扫描技术--awvs扫描器扫描web漏洞

[实验目的] 1.了解AWVS--Web漏洞扫描工具 2.学习AWVS的用法 [实验原理] AWVS(Acunetix Web Vulnerability Scanner)简介 WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全测试工具,它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序.适用于任何中小型和大型企业的内联网.外延网和面向客户.雇员.厂商和其它人员的Web网站.WVS可以通过检查SQL注入攻击漏