Web必备四大件:系统,中间件,数据库,程序源码
基本流程:
- 购买云服务器,购买域名
- 云服务器搭建中间件
- 下载并上传Web程序源码
- 添加网站并绑定域名目录
三种常规网站搭建模式
端口模式:端口区分不同网站
-
example.top:80 PHP网站 -
example.top:8080 jsp网站 -
example.top 88 asp网站
子域名模式:不同子域名对应不同网站
-
zlog.example.top zlog博客 -
bbs.example.top dz论坛 -
oa.example.top OA管理系统
目录模式:在解析路径不同文件夹对应不同网站
- example.top/wordpress php博客
- example.top/dedecms 论坛
程序源码
结构组成:
数据库目录,后台目录,文件目录
php源码可以直接访问,
asp源码需llspy反编译dll文件,(现在很少用了)
java也需要反编译字节码class文件。
数据库类型
本地一致:数据库和源码放在同一台服务器
站库分离:数据库在别的服务器上存储,另一台数据库存储/云数据库
文件访问路径
1.各种访问路径和路径跳转总结
路径:从一个点到另一个点的过程称为路径。
从一个起点到某个具体资源的过程称为访问路径,访问路径的最后一个斜杠(/)后面的是资源名称。
绝对资源路径是从起点http://开始到某个具体资源的前面的最后一个”/”结束的路径。
示例:
绝对访问路径:
https://localhost:8080/blog/csdn/net/index.jsp
绝对资源路径:
https://localhost:8080/blog/csdn/net/
资源名称:index.jsp
相对访问路径:/csdn/net/index.jsp
相对资源路径:/csdn/net/
绝对访问路径(URL)=绝对资源路径+资源名称
相对访问路径=相对资源路径+资源名称。
有相对访问路径就有参考路径,参考路径的前半部分一定是https://localhost:8080/。
绝对访问路径=参考路径+相对访问路径。
把访问路径是否可以独立完成资源准确定位作为判别标准,可以将路径分为绝对访问路径和相对访问路径。
绝对访问路径:给定的访问路径可以准确的定位到资源
相对访问路径:必须结合参照路径才能实现资源的定位
下面所说的相对路径都是指相对访问路径。
(1)以”/”开头的相对路径,开头的”/”表示根路径
a.前台路径
邮浏览器解析执行的代码中所包含的路径(出现在 css js html jsp 的路径就叫前台路径,因为浏览器访问服务器资源时会把css,js,html,jsp文件缓存到浏览器中,然后进行渲染,所以请求是从浏览器端发出的,自然由浏览器解析)(127.0.0.1=localhost=本机地址)
前台路径的参照路径是 web服务器的根路径
即:http://127.0.0.1:8080/,根路径下是多个项目。参考tomcat服务器,则根路径http://127.0.0.1:8080/ 代表webapps目录。
所以相对路径中开头的”/”即表示:http://127.0.0.1:8080/
转换工作由浏览器完成
b.后台路径
是由服务器解析执行的代码文件中所包含的路径(java 代码,jsp 文件中的动态部分,xml)
后台应用的参照路径是项目的根路径:
http://127.0.0.1:8080/项目名称/
所以相对路径中开头的”/”即表示:http://127.0.0.1:8080/项目名称/
可以看出,由服务器解析的根路径比由浏览器解析的多出一个”项目名称”节点,因为一个项目的根节点自然是这个项目的名称嘛。
(2)以路径名称开头的相对路径
路径名前面的空白是缺省的该资源文件的参照路径。除了请求转发外,其他的路径跳转方式的参照路径都是其绝对资源路径,不管是浏览器解析还是由服务器解析。
response 的sendRedirect() 方法可以完成重定向,其意思是让浏览器按照其指定的路径重新发一次请求,所以显然里面的路径自然由浏览器来解析,是前台路径。其参数路径开头的”/”表示当前web服务器的根。故此,此方法不仅仅可以实现在项目内部资源的跳转,还可以实现在实现在项目之间的跳转。
可以这样访问当前项目的其他资源:
response.sendRedirect(request.getContextPath()+”/otherServlet”);
站库分离
原理:源码数据库不在同一台服务器上
存储:放在其他服务器上数据库&云数据库产品
前后端分离
原理:前端JS框架,API传输数据
影响:
1、前端页面大部分不存在漏洞
2、后端管理大部分不在同域名
3、获得权限有可能不影响后端
https://www.rxthink.cn/ 前端站点http://manage.thinkphp6.elevue.rxthink.cn/content/item 后台管理演示站点
前端就是一个纯粹的展示界面,使用JS框架,通过后端开放的API传递数据
集成软件搭建Web应用
- 宝塔搭建Web应用:上传后门不可执行命令,也不可访问网站的上一级目录
- PHPSTUDY搭建Web应用:上传后门可以执行命令,也可以访问网站的上一级目录
- IIS搭建:上传后门可以执行命令,也可以访问网站的上一级目录,但是效果不太好,命令有的可以执行吗,有的不可以。
WEB 网站相关产品
WAF
原理:Web应用防火墙,旨在提供保护
影响:常规Web安全测试手段会受到拦截
示例:免费D盾防护软件,D盾防火墙
常见WAF分类
CDN
原理:内容分发服务,旨在提高访问速度
影响:隐藏展示源IP,导致对目标测试失误
演示:阿里云备案域名全局CDN加速服务
流程:
- 准备备案域名
- 配置宝塔的域名绑定
- 配置CDN加速选项
- 添加DNS CNAME记录
(群辉存储搭建的视频分发系统)
OSS
原理:数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。相当于一个放在公有云上的一个移动硬盘。类似于百度网盘、夸克网盘。也可以自己搭建
网盘OSD储存搭建:Cloudreve - 部署公私兼备的网盘系统
如果是纯文档也可以自己搭建:https://mrdoc.pro/
正/反向代理
正向代理为客户端服务,客户端主动建立代理访问目标(梯子)
反向代理为服务端服务,服务端主动转发数据给可访问地址
原理:通过网络反向代理转发真实服务达到访问目的
影响:访问目标只是一个代理,不是真实应用服务器
注意:正向/反向代理都是解决访问不可达问题,但是反向代理中可以通过重定向解析的功能操作,把访问指向别的web服务,导致反代理的站点指向和目标的资产没有任何关系
在宝塔面板里可以通过Nginx反向代理配置
负载均衡
原理:分摊到多个操作单元上进行执行,共同完成工作任务
影响:有多个服务器加载服务,测试过程中存在多个目标情况
演示:Nginx负载均衡配置
Windows2012 + BT宝塔面板 + Nginx
宝塔面板修改负载均衡配置,weight数值对应访问优先级。
配置好负载均衡后,对baidu.whgojp.top域名解析就会以1/2的概率分别访问这两个服务器
正常生产环境是搭建两个相同的服务,以防止一个服务器宕机后网站不能使用服务
应用程序 APP 开发架构
原生开发
使用H5语言开发
使用flutter开发(谷歌)
APP-开发架构-原生态-IDEA
自己写程序
APP-开发架构-Web封装-平台
示例:ShopXO源码程序+Web界面封装为APP
本质就是常规的安全站点,就是常规手段测试即可
APP-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
数据通信JS,API来完成,JS框架本身存在的安全问题,以及API安全可以测试
WX小程序-开发架构-Web封装-平台
演示:ShopXP源码程序+APP打包
本质还是Web站点,常规手段测试即可
WX小程序-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
数据通信JS,API来完成,JS框架本身存在的安全问题,以及API安全可以测试
原文始发于微信公众号(老付话安全):基础知识:Web应用搭建
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论