学习视频泷羽sec:安全见闻(2)_哔哩哔哩_bilibili
web安全
强调了Web程序的复杂性,指出前端语言虽然只有三种(HTML、CSS、JavaScript),但后端语言和框架非常多。学习Web安全需要了解多种后端语言,如Java、PHP、Python等,因为每种语言都可能存在反序列化漏洞。 强调理解Web程序的基本概念对于学习Web安全至关重要。懂进攻,知防守:了解攻击手段和防御策略是学习Web安全的基础。
一、web程序简介
1. Web程序的基本构成
Web程序通常由以下几个部分组成:
-
前端:用户界面部分,通过URL向服务器发送请求。
-
后端:服务器端逻辑,处理前端请求并执行相应的操作,如用户登录。
-
数据库:存储数据的地方,后端会调用数据库中的数据来处理请求。
-
服务器:存放数据库和运行后端程序的硬件设备。
2. 工作流程
-
用户通过前端(如浏览器)输入URL,发送请求到后端。
-
后端接收到请求后,根据请求的类型(例如登录请求),调用数据库中的数据。
-
数据库存储在服务器上,后端通过服务器访问数据库。
-
后端处理完请求后,将结果返回给前端,前端展示给用户。
3. 安全性
Web安全入门课程会进一步讲解这些内容,强调了理解这些基本概念的重要性。
-
HTML:提到了点击劫持(Clickjacking)的问题,这是一种安全漏洞,攻击者可以利用它来诱导用户在不知情的情况下与网页进行交互。
-
CSS:虽然CSS主要用于样式设计,但也存在注入问题。有时会被误认为是跨站脚本攻击(XSS),尤其是对于新手来说。
-
JavaScript:涉及多种安全问题,包括:
-
XSS(跨站脚本攻击):分为DOM型、反射型和存储型。
-
点击劫持:与HTML中的点击劫持类似,是另一种诱导用户进行非自愿操作的攻击手段。
-
请求走私(Request Smuggling):一种攻击技术,可以导致服务器解析请求时出现混淆,从而执行恶意代码。
-
文中强调了保持谦逊和持续学习的重要性,指出即使掌握了这些语言,仍然有很多知识需要学习,特别是在Web安全领域。如果不理解这些语言,就不可能掌握XSS、点击劫持、Web缓存漏洞、请求走私和跨域等安全问题。因此,要进行Web渗透测试和安全防护,必须学习这些知识。
二、JavaScript代码库
1. 代码库的概念和用途
代码库是将常用的代码片段、功能或组件封装起来,以便在不同的项目中方便地调用和重用。这样做可以节省开发时间,提高代码的可维护性和可重用性。
2. 常见的代码库
-
jQuery:一个快速、小巧且功能丰富的JavaScript库。它简化了HTML文档遍历、事件处理、动画和Ajax交互。
-
Bootstrap:一个流行的前端框架,用于开发响应式和预制的前端项目。它提供了预设计的组件和预设的CSS预处理器。
-
Element UI:一个基于Vue.js的桌面端组件库,用于快速搭建企业级的前端界面。
总结:代码库通过封装常用的功能,使得开发者可以避免重复编写相同的代码,从而提高开发效率。通过使用这些库,开发者可以更快地构建出功能丰富且美观的Web应用。
三、框架
所有框架最终都是基于HTML、CSS和JavaScript这三种基本语言构建的。
如果仅从纯粹的JavaScript角度去分析安全问题(如XSS)会非常耗时,通常通过使用框架来分析这些问题。
1. 常见的前端框架
-
React - 用于构建用户界面的 JavaScript 库,支持组件化开发。
-
Vue.js - 渐进式 JavaScript 框架,易于上手,适合构建交互式界面。
-
Angular - 由 Google 开发的框架,适合构建复杂的单页应用。
-
Svelte - 编译型框架,注重性能,开发体验友好。
-
Bootstrap - 前端框架,提供响应式设计和组件库,便于快速布局。
-
Tailwind CSS - 实用优先的 CSS 框架,允许快速设计 UI。
-
jQuery - 虽然较老,但仍被广泛使用,简化了 DOM 操作和事件处理。
-
Foundation - 类似 Bootstrap 的前端框架,提供响应式设计和组件。
2. 常见的后端框架
-
Slim - 轻量级的 PHP 微框架,适合构建简单的 API 和小型应用。
-
Lumen - Laravel 的微框架,专为构建快速的 API 而设计。
-
CodeIgniter - 小巧且高效的 PHP 框架,适合快速开发。
-
Yii - 高性能的 PHP 框架,提供丰富的功能,适合中小型项目。
-
Django - 全功能框架,强调快速开发和清晰的设计。
-
Laravel - 现代 PHP 框架,以优雅的语法和强大的功能受到欢迎。
-
Flask - 轻量级框架,适合快速构建小型应用和 API。
-
ThinPHP - 是一个轻量级的 PHP 框架,旨在提供简单、快速的开发体验。
-
Symfony - 组件化的框架,适合大型和复杂的应用。
-
Ruby on Rails - 以约定优于配置著称,适合快速开发 Web 应用。
-
Spring Boot - 用于构建生产级应用,支持微服务架构。
-
Jakarta EE - 企业级应用开发的标准框架。
-
ASP.NET Core - 微软的跨平台框架,适合构建高性能 Web 应用。
还有许多框架,但了解它们的基本功能就足够了。
四、数据库
1. 数据库的分类
数据库可以分为两大类:
1.1. 关系型数据库:这类数据库使用表格来存储数据,表格之间通过关系来关联。常见的关系型数据库包括:
MySQL SQL Server Access PostgreSQL
1.2. 非关系型数据库:这类数据库不使用表格模型,而是使用其他数据模型,如键值对、文档、宽列存储或图形数据库。常见的非关系型数据库包括:
MongoDB
CouchDB
Neo4j
Redis
2. 数据库的潜在漏洞
提到了数据库可能存在的潜在漏洞,如SQL注入、XSS(跨站脚本攻击)、命令注入等。
3. 学习数据库的重要性
强调了在想要学习SQL注入等安全问题之前,需要对数据库有一定的了解。
比喻说,如果你想学SQL注入而不知道数据库是什么,就好比想当警察而不知道枪是什么。
五、服务程序(中间件)
1. 常见的服务器程序
Apache:一种广泛使用的Web服务器软件。 Nginx:一种高性能的HTTP和反向代理服务器。 IIS(Internet Information Services):微软的Web服务器产品。 Tengine:由淘宝网发起的Web服务器项目,Nginx的分支。 Tomcat:由Apache软件基金会开发的Servlet容器。 WebLogic:由Oracle公司开发的Java应用服务器。
2. 潜在漏洞
服务器程序可能存在的潜在漏洞包括: 信息泄露 文件上传漏洞 文件解析漏洞 目录遍历 访问控制问题
六、web应用漏洞风险点
1. 前端潜在漏洞
信息泄露:敏感信息未经适当保护而被泄露。 XSS(跨站脚本攻击):攻击者在网页中注入恶意脚本。 CSRF(跨站请求伪造):攻击者诱使用户在已认证的会话中执行非自愿的操作。 点击劫持:攻击者通过透明层或窗口欺骗用户点击。 访问控制:未正确实施的权限检查导致未授权访问。 Web缓存漏洞:浏览器或服务器缓存敏感信息。 跨域漏洞:不同域之间的安全限制被绕过。 请求走私:攻击者利用HTTP请求的解析差异进行攻击。
2. 后端潜在漏洞
信息泄露:同前端,但通常涉及服务器端的数据。 XSS:虽然主要影响前端,但后端也需防范反射型XSS。 CSRF:同前端,但后端需要实施适当的防御措施。 SSRF(服务器端请求伪造):攻击者利用服务器端应用程序发起恶意请求。 反序列化漏洞:不当的反序列化操作导致安全问题。 SQL注入漏洞:攻击者通过注入恶意SQL代码来操纵数据库。 命令注入漏洞:攻击者通过注入恶意命令来执行未授权的操作。 服务端模板注入:攻击者通过注入模板代码来执行恶意操作。 跨域漏洞:同前端,但后端需要正确设置CORS策略。 访问控制:同前端,但后端需要确保适当的权限检查。