《网络对抗技术》Exp8 Web综合
一、实践内容
1.1 实践内容
(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端
MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:
编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例。
二、基础知识
2.1 基础知识
- Web前端
- 编程语言:PHP、JavaScript、Ruby、HTML5、Java和Python
- 运行环境:浏览器
- 编程用语:在浏览器内部的动态,美观展示形式
- Web后端
- 编程语言:C/C++/C#、Java、PHP、Python、Go、Node.js
- 运行环境:应用服务器
- 编程用途:对前端提交的数据进行处理并返回相应的HTML网页内容
- 数据库编程
- 编程语言:SQL(关系型数据库)、Optimizer hint、pgsql
- 运行环境:数据库服务器
- 编程用途:基本的数据增、删、改、查
2.2 GET和POST两个方面
- GET 参数通过 URL传值,参数可见且不够安全,不能用来传递敏感信息,而 POST 参数放在 Request body 中,参数不可见,相对而言比较安全;
- GET 请求在 URL 中传送的数据大小是有限制的(一般不超过2k-4k,取决于浏览器),而 POST 请求中的数据大小长度根据后台配置文件设定,理论上没有限制;
- GET 在浏览器回退时是无害的,而 POST 在浏览器回退时会再次提交请求;(GET 会将请求参数放在请求的 URL 中,回退操作实际上浏览器会从之前的缓存中拿结果,POST 每次调用都会创建新的资源)
- GET 请求会被浏览器主动 cache,而 POST 除非手动设置,否则不会;(浏览器缓存分为强缓存和协商缓存)
- GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以;(GET 请求会把参数带到 URL 中,可以此保存浏览器书签)
- GET 请求只能进行 URL 编码,而 POST 支持多种编码方式;
对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制;(URL 是 HTTP 的一个首部,根据约定,一定是 ASCII 字符的) - GET 请求产生一个 TCP 数据包,而 POST 请求产生两个数据包;
2.3 XSS攻击
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。
2.4 SQL注入攻击#
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
三、实践步骤
3.1 Web前端HTML
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
(1) 在电脑上安装Apache,我已安装完成
启动Apache服务后,在浏览器中输入localhost
显示如下画面,说明服务启动成功
(2) 创建一个带表单的html
在
D:\apache\Apache24\htdocs
目录下,新建一个简单的含有表单的html文件test8.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>20194307</title>
<!-- 设置链外部样式 --
<link rel="stylesheet" type="text/css" href="test8.css" /
</head>
<body>
<h1 align="center" style="color:hotpink;font-size:100px;">
LOGIN
</h1>
<div>
<form action="2.php" method="post" align="center" style="color:black;font-size:25px;">
学号: <input type=