目录
Web基础
Web服务器介绍
Web攻击
SQL注入攻击——针对网站数据库的攻击
XSS跨站脚本攻击——针对用户浏览器的攻击
CSRF跨站请求伪造攻击——针对用户浏览器的攻击
三种攻击方式的区别
Web基础
什么是Web
Web指的是万维网(World Wide Web),也就是常说的www。是一个由许多互相链接的超文本系统组成的,通过互联网访问
我们平时通过浏览器上网都是Web
Web的组成
Web主要是由客户端、服务端(脚本引擎就运行在服务器上)、数据库三部分组成
其中客户端(浏览器)称为前端,服务器和数据库称为后端
Web的发展史
Web1.0 万维网初期阶段,使用大量的静态界面供用户阅读,用户进行无法添加修改(例如 个人网站)
Web2.0 可以在网页上添加、修改内容(例如 博客书写,进行人与人之间的交互)
Web1.0存在的安全隐患
以SQL注入、上传漏洞为主,主要危害Web服务器
Web2.0存在的安全隐患
Web2.0出现了越来越多的安全隐患,常见的有XSS、CSRF、数据劫持等
逐渐针对Web上网用户进行攻击
Web服务器介绍
Web服务端的发展
Web服务端其实也是跟着Web而发展的
Web的静态页面时期
服务器通过HTML等后缀文件组成静态页面来供客户端访问
Web的动态页面时期1
服务器提供动态页面,而动态页面是由脚本驱动的(PHP脚本文件),由于客户端无法识别php、js等脚本文件
因此需要将PHP脚本文件经过服务器端的语言解释器,将其解析为HTML文件,发送到Web客户端进而显示出来(浏览器看到的该文件后缀为PHP,而不是HTML)
Web的动态页面时期2
当网页的浏览量非常庞大的时候,这个时候急需要数据库服务来提供Web服务端的数据支持
当我们进行页面操作的时候,PHP脚本文件经过服务器端的语言解释器,解析执行向数据库调取/写入数据,然后数据库返回相应的数据
这些数据在通过语言解析器的时候,再组装成HTML文件,然后发给浏览器
语言解释器一般和Web服务器运行在同一服务器上,两者利用配置文件进行连接
脚本也是通过配置文件连接到数据库服务的,以此来执行相关的数据库操作
然后Web服务器、语言解释器、数据库服务构成了现在的Web服务端/后端架构
Web工作流程
从客户端(浏览器)角度来看的工作原理
也就是HTTP/HTTPS的通信过程
HTTP、HTTPS、SSL协议以及相关报文讲解-CSDN博客
目前流行的Web后端架构有哪些
这些架构并不是固定的,也可以进行很灵活的组合
如何搭建一个Windows+Apache+PHP+MySQL的简易的Web服务端环境
通过下载一个集成软件phpStudy来实现简易的Web服务器环境的搭建,安装该软件后 会自动安装apache、mysql服务(Mysql的用户名和密码都是root)
安装完成后,网页的 /.php文件在哪里?
软件安装目录下的WWW目录中就存放着/.php文件
默认网页打开显示的内容就是该文件内容
创建自己的网页
我们可以写自己的网页HTML/PHP文件,将其放到该目录下(WWW目录下),之后访问该网站指定目录是就会弹出此网页
例如:我们在www目录下创建一个123.html文件时,我们访问127.0.0.1/123.html这个网页,就会显示123.html的内容
Web攻击
Top10应用安全风险
SQL注入攻击——针对网站数据库的攻击
为什么会出现SQL注入
我们先了解url组成:https://kaifa.baidu.com/searchPage?wd=cdn&hmsr=aladdin,其中?之后也就是紫色部分就是我们用户可以输入的变量的数据,通过该变量可以直接从数据库取得不同的数据
SQL注入如何实现
SQL注入就是程序员在编写代码(存储在服务器端的脚本)的时候,没有对用户输入数据的合法性进行判断,使得应用程序存在安全隐患
黑客通过在输入数据时插入一段数据库查询代码,当该url到达服务器时,服务器就去调用数据库执行该查询语句,然后将得到的结果返回给黑客,这样黑客就可以得到想知道的某些数据或进行数据库操作
即:就是通过post/get等方式请求 web表单、输入域名或页面请求的查询字符串中插入SQL语句,改变了原始查询的意义,最终使得web服务器执行恶意命令的过程
SQL的危害
数据库信息收集
对数据库进行增删改操作
借助数据库的某些功能控制操作系统(例如SQL Server的内置存储过程XP_CMDShell)
SQL的防御
对于用户的输入数据(提交的url请求中的参数部分)、用户从cookie中得到的数据(不会返回重要数据)、从其他系统传入的数据进行限制(即:任何和用户有接触的输入点,就需要对用户的输入做一定的过滤)
部署防SQL注入系统或脚本
具体的限制方法:
白名单:限制传递数据的格式
黑名单:过滤特殊字符串(update、delete等)、过滤特殊字符
XSS跨站脚本攻击——针对用户浏览器的攻击
XSS原理
攻击者向有XSS漏洞(程序员没有对用户提交的数据进行过滤)的网站中输入恶意的HTML代码,当其它用户浏览该网站时,该HTML代码就会自动执行,从而达到攻击的目的(如:盗取用户的Cookie、破坏页面结构、重定向到其它网站等)
例如:网站A有个留言功能,并且程序员没有对用户提交的数据进行过滤,则此时黑客生成恶意的HTML代码并通过留言功能输入到服务器,之后当有用户来访问留言板功能时,就会自动执行恶意代码
XSS的分类
反射性XSS攻击(非持久化)
诱使用户去访问一个包含恶意代码的URL,当用户自己去点击链接才能触发XSS代码(服务器上并没有这样的页面和内容)
存储型XSS攻击(持久化)
将代码通过提交的方式储存到Web服务器或数据库中,用户访问该页面的时候触发代码执行
防御方法
购买防火墙等安全设备,对web内容进行过滤
在程序中对用户输入的数据进行过滤
使用http only禁止JS读取cookie值
CSRF跨站请求伪造攻击——针对用户浏览器的攻击
通过XSS等方式窃取受害者信息(XSS是实现CSRF诸多手段中的一种),然后攻击者伪造受害者的身份,以受害者的身份发起恶意请求,但是这种恶意请求针对服务器端来说它认为是正常的请求
要想完成一次CSRF操作,必须要求用户有以下操作
登录受信任网站A,并在本地生成Cookie
在不登出A的情况下,访问危险网站B(危险网站就是利用CSRF漏洞在网站A上插入图片链接等诱导用户点击)
此时黑客就可以以用户的身份访问网站A
防护措施
服务端没有对是否是用户自愿发起的请求做一个确认,可以通过以下方法来进行防护:
通过安全产品来进行防护(验证HTTP Referer字段、请求地址添加token验证等)
在结束网站访问时不要直接关闭浏览器,要先退出登录
三种攻击方式的区别
主要是通过攻击的目的来进行区分
SQL注入: 获取数据库中的敏感信息
XSS: 控制用户的浏览器执行恶意脚本,盗取信息
CSRF: 伪造受害者身份,受害者能做什么,攻击者就可以做什么