【网络安全】护网系列-web基础

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【网络安全】护网系列-web基础

一、护网-Web基础

1.web开发基础

1.1识别网络上的设备

  1. IP地址(4个八位数)
  2. MAC地址

1.2DNS请求流程

image-20230713221751890.png

1.3 HTTP

HTTPS = HTTp + ssl

http请求方法

  1. GET(从web服务器获取请求)
  2. POST(向web服务器提交数据)
  3. PUT(向网络服务器提交请求)
  4. DELETE()

1.4 HTTP状态码

根据状态码决定下一步攻击思路&防守思路

301(永久的重定向)

302(暂时的变化,版本变化自己会变)

400(告诉浏览器,请求中有错误)

401(一直去查看资源,直到获得网络授权 eg:用户名&密码错误)

403(无论是否登录,都没权限看资源)

404(请求页面资源不存在)

405(资源不允许以这种方式请求,eg:要求用post请求,结果拿get请求,报错)

500(服务器在请求中遇到错误不知道怎么处理)

503(服务器无法取得请求)

200(成功):服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
301(永久移动):请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响
应)时,会自动将请求者转到新位置。
302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
401(未授权):请求要求身份验证。
403(禁止):没有权限,禁止访问。
404( 未找到):服务器找不到请求的网页。
500(服务器内部错误):服务器遇到错误,无法完成请求。
503(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
AI 代码解读

image-20230713222118459.png

1.5 Cookie

  • 用于客户端计算机暂时&永久保存的信息
  • 用于辨别用户身份

1.6 web是如何工作的

image-20230713222145211.png

1.6.1 PHP

image-20230713222223586.png

1.6.2 Mysql数据库

  • 开源
  • 跨平台
  • 为多种编程语言提供API

1.6.3 与网安关系

  • SQL注入
  • Outfile和dumpfile写shell
  • 日志getshell
  • mof提权和udf提权

1.6.4 常见网站基础架构

  • 同服务器
  • 站库分离(源码数据库在不同服务器)
  • 前后端分离(主流,大公司,安全性最高)
  • 宝塔+phpstudy(新手易上手)
  • 建站分配站

1.6.5 web应用架构

image-20230713222314231.png

2. PHP登录页实现

2.1 PHP概念

image-20230713222351234.png

2.2 前台登录页面

<?php
include("conn.php");
{
   
   mathJaxContainer[0]}_POST['username'];
{
   
   mathJaxContainer[1]}_POST['password'];

//判断输入账号密码是否正确
{
   
   mathJaxContainer[2]}username' and pass='$password';";

//结果记录
{
   
   mathJaxContainer[3]}conn2,$uapsql);
// var_dump($reslust);
// var_dump();

     //确定有记录                                                                                                                                                                                                                                                                                                                          
    if(mysqli_num_rows($reslust)){
   
   
        //跳转到游戏页面
        header('Location:youxi.php');
        session_start();
        $_SESSION['login']='true';
    }else{
   
   
        $login = "登录失败";
        $_SESSION['login']='false';
    }
?>

<html>
<head>
<meta charset=utf-8>
</head> 
<h1>请输入账号以及密码</h1> 
<form action="" method="post" ></br>
<input type="text" name="username"> </br>
<input type="password" name="password"> </br>
<input type="submit"> 
</form>
<a href="zhuce.php">点击注册</a></br>
<?php echo $login;?>

</html>
AI 代码解读

image-20230713222433372.png

2.3 后台数据交互过程

连接数据库

<head>
<meta charset=utf-8>
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "root";

// 创建连接(还可以包含库名,端口号)
//建立成功输出1,错误输出0
{
   
   mathJaxContainer[4]}servername, {
   
   mathJaxContainer[5]}password);

// 检测连接
if (!$conn) {
   
   
    die("Connection failed: " . mysqli_connect_error());
    //输出一条信息,退出脚本
}
echo "连接成功";
?>


// 创建数据库
$sql = "CREATE DATABASE myDB";
if (mysqli_query({
   
   mathJaxContainer[6]}sql)) {
   
   

    echo "数据库创建成功";
} else {
   
   
    echo "Error creating database: " . mysqli_error($conn);
}

mysqli_close($conn);
AI 代码解读

检测连接

<head>
<meta charset=utf-8>
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "kkk";

// 创建连接
{
   
   mathJaxContainer[7]}servername, {
   
   mathJaxContainer[8]}password);
{
   
   mathJaxContainer[9]}servername, {
   
   mathJaxContainer[10]}password, $dbname);

// 检测连接
if (!$conn) {
   
   
    die("连接失败: " . mysqli_connect_error());
}else{
   
   
    // echo "数据连接成功</br>";
    if(mysqli_connect({
   
   mathJaxContainer[11]}username, {
   
   mathJaxContainer[12]}dbname)){
   
   
    // // echo "数据库表已经存在";
    // $conn2 = mysqli_connect($servername, $username, $password, $dbname);
    }else{
   
   
    echo "开始自动创建数据库</br>";
    {
   
   mathJaxContainer[15]}dbname;
    mysqli_query({
   
   mathJaxContainer[16]}sql);
    echo "数据库创建成功</br>";

    //如果不存在kkk_tbl的表头的话进行创建
    $createtbl="CREATE TABLE IF NOT EXISTS `kkk_tbl`(
        `id` INT UNSIGNED AUTO_INCREMENT,
        `user` VARCHAR(10) NOT NULL,
        `pass` VARCHAR(10) NOT NULL,
        `phone` VARCHAR(11) NOT NULL,
        `file` VARCHAR(30) ,
        PRIMARY KEY ( `id` )
     )ENGINE=InnoDB DEFAULT CHARSET=utf8;";
     {
   
   mathJaxContainer[17]}servername, {
   
   mathJaxContainer[18]}password, $dbname);
     mysqli_query({
   
   mathJaxContainer[19]}createtbl);
     echo "数据表创建成功</br>";
    }
}

// mysqli_close($conn);
?>
AI 代码解读

2.4 登录过程实现流程

通过表单获取账号和密码

数据库查询是否存在这个记录(mysql_query(conn,sql))

3. HTTP协议

3.1 网络协议

第一台网络计算机,1969年发明

3.1.1 网络协议中的约定

image-20230714094950569.png

3.1.2 TCP/IP协议簇

image-20230714095202369.png

3.1.3 TCP/IP四层模型

image-20230714095422625.png

3.1.5 数据的传输

image-20230714095514645.png

3.1.6 OSI七层参考模型

image-20230714095701821.png

3.2 HTTP诞生

3.2.1 HTTP协议

超文本传输连接(超链接),打破信息壁垒,让各个网页可以连接在一起

3.2.2 HTML

超文本标记语言,规范网页中的文档

3.2.3 URL

统一资源定位符

image-20230714100217382.png

除了HTTP协议,还有file协议(本地计算机协议)
当访问百度时,浏览器默认添加443端口号
AI 代码解读

3.2.4 浏览器

用来解析网页

Netscape(世界上第一个浏览器)
Internet Explorer
Google Chrome(国产浏览器都是谷歌改版的,套壳)
AI 代码解读

3.2.5 web服务器

世界上第一个网站

http://info.cern.ch/
AI 代码解读

image-20230714101318531.png

3.3 HTTP消息详细格式

3.3.1 请求方式

由于语义不同,响应方式不同,发送数据用get,提交数据用POST

image-20230714101828663.png

(1)GET和POST区别

image-20230714102150291.png

3.3.2 请求响应报文格式

(1)请求报文
请求头:对请求动作的描述

Accept:请求回来能接收什么类型的文件
Referer:从哪个网页来的
Accept—Language:告诉服务器当前使用的语言
UserAgent:客户端的描述-用什么来访问网页(华为电脑?华为手机?苹果电脑等等)
Content-Type:发送格式
Host:域名端口
Content-Length:请求内容长度
Connection:长链接&短连接
Cache-Control:没有缓存
Cookie:服务器给的标记(登录还是没登录)
AI 代码解读

image-20230714111843072.png

image-20230714102449207.png

(2)响应报文

image-20230714103357225.png

3.3.3 响应状态码

image-20230714111311043.png

3.3.4 特点总结

1.请求应答模式
2.灵活可扩展
3.可靠传输(3次握手,4次挥手)
4.无状态
5.明文传输
AI 代码解读

3.4 HTTP服务器

常见的服务器

Apache
Ngnix
tomcat
weblogic
python
AI 代码解读

python服务器

py2下,打开cmd启动
python -m http.server 8089
AI 代码解读

3.5 HTTP客户端

浏览器
APP(微信、支付宝、淘宝)
Python
Java

微信内置浏览器,直接用自己的浏览器上网
AI 代码解读

3.6 HTTP常用调试工具

1F12 浏览器中开发者工具
2hackbar(谷歌火狐插件)
3BurpSuite
4Postman(做测试必用)
5WiresharkFiddlerCharles(抓包和解析包)
6CURLLinux下工具)
AI 代码解读
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
18
分享
相关文章
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
39 3
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
137 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
455 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
94 1
|
6月前
|
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
58 0
Python网络编程:Web框架基础(Flask/Django)
Python作为一种功能强大且易于使用的编程语言,广泛应用于Web开发领域。Python的丰富生态系统中,有两个非常流行的Web框架:Flask和Django。本博文将详细介绍这两个框架的基础知识,并通过综合示例展示如何使用它们构建Web应用。
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
云计算与网络安全:技术融合下的新挑战PHP 在现代Web开发中的角色和挑战
【8月更文挑战第23天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种便利性也带来了前所未有的网络安全风险。本文将探讨云计算环境中的网络安全挑战,分析信息安全的关键问题,并提出相应的防护措施。我们将深入讨论如何通过策略和技术的结合来增强云安全,确保数据的安全和隐私保护。
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
117 17

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等