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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【网络安全】护网系列-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(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

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>

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);

检测连接

<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);
?>

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端口号

3.2.4 浏览器

用来解析网页

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

3.2.5 web服务器

世界上第一个网站

http://info.cern.ch/

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:服务器给的标记(登录还是没登录)

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.明文传输

3.4 HTTP服务器

常见的服务器

Apache
Ngnix
tomcat
weblogic
python

python服务器

py2下,打开cmd启动
python -m http.server 8089

3.5 HTTP客户端

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

微信内置浏览器,直接用自己的浏览器上网

3.6 HTTP常用调试工具

1、F12 浏览器中开发者工具
2、hackbar(谷歌火狐插件)
3、BurpSuite
4、Postman(做测试必用)
5、Wireshark、Fiddler、Charles(抓包和解析包)
6、CURL(Linux下工具)
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
153 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
22天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
20 1
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
16 0
|
3月前
|
数据库 开发者 Python
Python网络编程:Web框架基础(Flask/Django)
Python作为一种功能强大且易于使用的编程语言,广泛应用于Web开发领域。Python的丰富生态系统中,有两个非常流行的Web框架:Flask和Django。本博文将详细介绍这两个框架的基础知识,并通过综合示例展示如何使用它们构建Web应用。
|
3月前
|
SQL 监控 安全
|
3月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
3月前
|
XML SQL 安全
【网络安全】Web Hacking网络黑客手册,GitHub星标3.7K!
在黑客攻击的演变过程中,防火墙只是一个减速带。黑客攻击不断发展,变得越来越复杂,适应能力和创造力都在不断增强,造成的破坏也越来越大。通过网络端口进行的 Web 攻击影响巨大。 今天给小伙伴们分享的这份手册主要讲解了Web黑客攻击方向。描述了 Web 语言和协议、Web 和数据库服务器以及支付系统。介绍了完整的方法论,包括技术和攻击、对策、工具,以及案例研究和 Web 攻击场景,展示了不同攻击的工作原理及其工作原理。
|
3月前
|
存储 Linux 网络安全
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
|
3月前
|
安全 网络安全 PHP
云计算与网络安全:技术融合下的新挑战PHP 在现代Web开发中的角色和挑战
【8月更文挑战第23天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种便利性也带来了前所未有的网络安全风险。本文将探讨云计算环境中的网络安全挑战,分析信息安全的关键问题,并提出相应的防护措施。我们将深入讨论如何通过策略和技术的结合来增强云安全,确保数据的安全和隐私保护。
|
6天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
19 2