001-基础入门-Web演示&源码&资源&工具箱等

image-20250713204418386

知识点

Web常规

Web应用搭建一般需要以下四大件:

  • 操作系统
  • 中间件
  • 数据库
  • 源码

常规的Web应用搭建过程

  1. 购买云服务器,购买域名

  2. 云服务器去搭建中间件

  3. 下载并上传Web程序源码

  4. 添加网站并绑定域名目录

Web其他

  • 集成软件:常规搭建是通过一步步自己安装操作系统、中间件等来搭建网站,而集成网站直接通过如宝塔、phpstudy的集成工具搭建的网站

  • Docker容器:一个docker镜像对应一个网站

  • 分配站:比如注册一个账号,就会分配给该用户一个网站,比如cnblog博客园

Web拓展

  • CDN:内容分发网络

  • WAF:Web应用防火墙

  • 云数据库:

    • 现在,云服务商也提供云数据库服务,可以将站点部署在本地,数据库使用云数据库,不需要自己配置操作系统和数据库即可使用,由云服务商提供安全支撑。

    • 从安全角度讲,云数据库能够限制访问IP,限制访问方式为使用阿里云key访问而非用户名/密码,提高了安全性

  • OSS:

    • 对象云存储服务,搭建网站时,网站的资源不一定都放在本地,可以将资源放在OSS上
    • 如文件上传漏洞,将上传的一句话木马直接传到了OSS,OSS既不知道具体存储路径,又没有可供解析的如PHP等环境,不利于后续连接访问,这也是近年来的安全测试遇到的新问题
  • 静态

  • 负载均衡

Web程序源码

  • 开源

    1. 免费开源,源码可见

    2. 开源但源码不可见

      • 加密:如PHP代码加密,加密源码但不影响语言功能
      • 语言的特性决定:如Java源码即使拿到,.class文件在文本编辑器中也是显示乱码,无法拿到开发者的.class文件;asp站点的源码在.dll文件中,需要反编译才能看到源码
  • 商业:付费的商业软件

  • 自写:自己有能力,自己写来搭建网站

演示案例

域名&配置-主站&分站&端口站&子站

区分不同域名配置,有利于信息收集

子域名模式

即通过不同子域名区分不同站点,如视频中演示的

端口模式

即通过不同端口区分不同站点,如

目录模式

即通过不同目录区分不同站点,如

源码&配置-路由访问&文件结构&语言类型

路由访问

  • URL和文件目录对应:常规网站的访问都是通过目录来访问不通资源

  • URL和文件目录对应不上,要根据配置路由决定:比如mvc源码如Java、Python站点,必须通过特定路由规则来访问才能访问到。如下所示的站点目录/wwwroot结构

    • /wwwroot/WEB-INF/web.xml
    • /wwwroot/index.jsp

访问index.jsp能正常访问,但使用相对路径访问web.xml时报错,这是由于该Java站点配置了特定路由规则

解析&配置-网站目录&绝对相对路径&权限

略

数据库&配置-数据类型&数据存储&授权登录

略

本节总结

0、知道Web必备四大件作用

1、知道网站有哪些形式展示

2、知道源码和URL访问对应关系

3、知道源码有加密开源闭源类型

4、知道文件访问解析由什么决定

由该被访问文件的权限来决定,如该文件是否可读、是否可写、是否可执行

如下图所示是一个asp后门的权限配置界面,不给该文件的访问、执行权限时,网页访问不了,哥斯拉也连接不上。

文件权限应当适当配置,合理授权,授权过大容易被远控,授权过小则影响服务质量

image-20250713215349424

5、知道数据库存储数据站库分离

如果网站搭建时,数据库和程序源码放在同一台主机上,属于不分离;若数据库和程序源码分别放在两台不同主机上,就属于站库分离

6、知道中间件配置影响后续手法

7、知道常规真实Web搭建解析流程

8、思考为什么要学习掌握这些东西

笔者注

DNS解析至服务器后,服务器中间件的处理

域名解析记录中,子域名填写‘@’表示随机

DNS解析过程:在DNS服务商处添加解析记录,只能使数据包定位至某个IP主机,IP主机如何得知该数据包需要访问哪个目录?

这与中间件的配置有关,中间件将访问请求进行处理,将该请求移交给具体某个服务,以下是一个Nginx配置文件的解读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
server
{
/*监听与协议配置*/
listen 80; # 监听 HTTP(80端口)
listen 443 ssl; # 监听 HTTPS(443端口)并启用 SSL/TLS
listen 443 quic; # 监听 QUIC(HTTP/3)协议
http2 on; # 启用 HTTP/2 协议支持

/*基础服务配置*/
server_name baidudu.top www.baidudu.top; # 绑定域名(正是这里在本地将域名和此80端口服务相绑定)
index index.php index.html index.htm default.php default.htm default.html; # 默认索引文件查找顺序
root /www/wwwroot/baidudu.top; # 网站根目录

/*SSL/TLS 安全配置*/
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
include /www/server/panel/vhost/nginx/well-known/baidudu.top.conf;
#CERT-APPLY-CHECK--END

#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
ssl_certificate /www/server/panel/vhost/cert/baidudu.top/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/baidudu.top/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_tickets on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
error_page 497 https://$host$request_uri;

#SSL-END

/*错误页面与资源处理*/
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END

#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END

#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/baidudu.top.conf;
#REWRITE-END


/*安全防护设置*/
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}

#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}

/* 静态资源缓存优化*/
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d; # 图片缓存 30 天
error_log /dev/null; # 关闭访问日志(减少磁盘 I/O)
access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
expires 12h; # JS/CSS 缓存 12 小时
error_log /dev/null;
access_log /dev/null;
}

/*日志管理*/
access_log /www/wwwlogs/baidudu.top.log; # 访问日志路径
error_log /www/wwwlogs/baidudu.top.error.log; # 错误日志路径
}

为何有些网站访问jsp是下载,有些网站访问jsp是执行解析网页

这和站点中间件上对MIME的处理类型相关,如下图所示,将服务端的.png文件解析为image/png类型即图片

image-20250713224503398

站内搜索

没有找到内容!