目录
什么是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的静态页面时期
服务器通过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的内容
Top10应用安全风险
为什么会出现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漏洞(程序员没有对用户提交的数据进行过滤)的网站中输入恶意的HTML代码,当其它用户浏览该网站时,该HTML代码就会自动执行,从而达到攻击的目的(如:盗取用户的Cookie、破坏页面结构、重定向到其它网站等)
例如:网站A有个留言功能,并且程序员没有对用户提交的数据进行过滤,则此时黑客生成恶意的HTML代码并通过留言功能输入到服务器,之后当有用户来访问留言板功能时,就会自动执行恶意代码
XSS的分类
反射性XSS攻击(非持久化)
诱使用户去访问一个包含恶意代码的URL,当用户自己去点击链接才能触发XSS代码(服务器上并没有这样的页面和内容)
存储型XSS攻击(持久化)
将代码通过提交的方式储存到Web服务器或数据库中,用户访问该页面的时候触发代码执行
防御方法
购买防火墙等安全设备,对web内容进行过滤
在程序中对用户输入的数据进行过滤
使用http only禁止JS读取cookie值
通过XSS等方式窃取受害者信息(XSS是实现CSRF诸多手段中的一种),然后攻击者伪造受害者的身份,以受害者的身份发起恶意请求,但是这种恶意请求针对服务器端来说它认为是正常的请求
要想完成一次CSRF操作,必须要求用户有以下操作
登录受信任网站A,并在本地生成Cookie
在不登出A的情况下,访问危险网站B(危险网站就是利用CSRF漏洞在网站A上插入图片链接等诱导用户点击)
此时黑客就可以以用户的身份访问网站A
防护措施
服务端没有对是否是用户自愿发起的请求做一个确认,可以通过以下方法来进行防护:
通过安全产品来进行防护(验证HTTP Referer字段、请求地址添加token验证等)
在结束网站访问时不要直接关闭浏览器,要先退出登录
主要是通过攻击的目的来进行区分
SQL注入:? ? ?获取数据库中的敏感信息
XSS:??????????? 控制用户的浏览器执行恶意脚本,盗取信息
CSRF:????????? 伪造受害者身份,受害者能做什么,攻击者就可以做什么