1.实验内容
1.1本周学习内容
Web 前端:负责开发用户所看到的内容。
(1)HTML
(2)JavaScript(Js)
(3)CSS
(4)Web 前端框架
Web 后端:主要使用各种库,API,Web 服务等技术搭建后端应用体系,确保各种 Web服务接口之间的正确通信。比如处理前端用户发起的请求,各种业务逻辑的操作,最后与数据库交互,完成增、删、改、查等数据库操作。
(1)C
(2)Java
(3)PHP
(4)Python
(5)C#
1.2实验内容及要求
(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)安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
2.实验过程
2.1Web前端HTML
2.1.1启停Apache
暂停Apache服务
查看Apache服务
启动Apache服务
查看Apache服务
2.1.2HTML,表单,GET与POST方法
HTML
HTML(HyperText Markup Language,超文本标记语言)是用于创建网页和网上应用的标准标记语言。它描述了网页的结构。HTML文档由一系列的元素构成,这些元素通过标签来定义,比如, ,
<div class="form-container"><h2>登录</h2><form action="#" method="post"><label for="username">用户名:</label><input type="text" id="username" name="username" required placeholder="请输入用户名"><label for="password">密码:</label><input type="password" id="password" name="password" required placeholder="请输入密码"><input type="submit" value="提交"></form>
</div>
`
2.2Web前端javascipt
2.2.1JavaScript的基本功能,DOM
JavaScript的基本功能:
①嵌入动态文本于HTML页面:JavaScript可以动态地生成和修改HTML页面的内容,从而实现页面的动态效果。
②对浏览器事件做出响应:JavaScript能够监听和响应各种浏览器事件,如点击、键盘输入、鼠标移动等,从而提供交互式的用户体验。
③读写HTML元素:通过JavaScript,可以读取和修改HTML文档中的元素,包括它们的属性、样式和内容。
④数据验证:在数据被提交到服务器之前,JavaScript可以进行前端验证,确保用户输入的数据符合预期的格式和范围。
⑤检测访客浏览器信息:JavaScript能够获取访客的浏览器类型、版本、操作系统等信息,从而根据不同的浏览器环境提供不同的内容或功能。
⑥控制cookies:JavaScript可以创建、读取、修改和删除cookies,这对于实现用户会话管理、个性化设置等功能非常重要。
⑦服务器端编程:基于Node.js技术,JavaScript也可以用于服务器端编程,实现后端逻辑和数据处理。
DOM:DOM是W3C(万维网联盟)组织推荐的处理可扩展标志语言的标准编程接口。它允许程序和脚本动态地访问和更新文档的内容、结构和样式。
2.2.2在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
输入合法的用户名和密码
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105222999-273519103.png)
密码为空:
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105311392-711560359.png)
代码如下:
`<div class="form-container"><h2>登录</h2><form id="loginForm" action="#" method="post" onsubmit="return validateForm()"><label for="username">用户名:</label><input type="text" id="username" name="username" required placeholder="请输入用户名"><label for="password">密码:</label><input type="password" id="password" name="password" required placeholder="请输入密码"><input type="submit" value="提交"></form><div id="welcomeMessage" class="message"></div>
</div><script>// 表单验证函数function validateForm() {var username = document.getElementById('username').value;var password = document.getElementById('password').value;var welcomeMessage = document.getElementById('welcomeMessage');// 用户名和密码不能为空if (username === '' || password === '') {alert('用户名和密码不能为空!');return false;}// 简单的用户名验证:长度在3个字符之上if (username.length < 3 ) {alert('用户名长度应在3个字符之上!');return false;}// 简单的密码验证:长度在6到20个字符之间if (password.length < 6 || password.length > 20) {alert('密码长度应在6到20个字符之间!');return false;}// 如果验证通过,回显欢迎信息document.write('欢迎' + username);return false; // 防止表单提交}
</script>
`
2.2.3尝试注入攻击:利用回显用户名注入HTML及JavaScript。
注入HTML
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105658275-1349625100.png)
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105635700-1967187281.png)
注入JavaScript
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105543506-294427467.png)
2.3Web后端
启动数据库服务并安装安全脚本
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219121933214-365353423.png)
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122034363-1889232880.png)
使用root用户连接数据库
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122109593-1171508992.png)
查看数据库
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122431653-923506393.png)
创建一个名为gbc的用户
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122501809-1130503140.png)
创建并使用数据库
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122648859-1729966146.png)
建立包含studentid、password两个字段表user,插入用户名和密码,并查看
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122856676-419841003.png)
2.4Web后端:编写PHP网页,连接数据库,进行用户认证
创建php文件
![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219123250749-329107709.png)
代码如下
`// 设置数据库服务器的名称$servername = "localhost";
// 设置连接数据库的用户名
$username = "root";
// 设置连接数据库的密码
$password = "20222402";
// 设置要连接的数据库名
$dbname = "20222402gbc";
// 使用mysqli创建一个新的数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
// 如果连接失败,输出错误信息并停止脚本执行
die("连接数据库失败: " . $conn->connect_error);
}
// 使用null合并运算符从POST请求中获取用户名,如果POST请求中没有该值,则将其设置为空字符串
$username = $_POST['username'] ?? '';
// 使用null合并运算符从POST请求中获取密码,如果POST请求中没有该值,则将其设置为空字符串
$password = $_POST['password'] ?? '';
// 创建一个SQL查询语句,用于从user表中查找与给定用户名和密码匹配的用户
$sql = "SELECT * FROM user WHERE username = '$username' AND password = '$password'";
// 执行SQL查询并获取结果
$result = $conn->query($sql);
// 检查查询结果中的行数是否大于0,即是否找到了匹配的用户
if ($result->num_rows > 0) {
// 如果找到了匹配的用户,输出登录成功的消息
echo " 欢迎 ! 登陆成功!";
} else {
// 如果没有找到匹配的用户,输出用户名或密码错误的消息
echo "用户名或密码错误!";
}
// 关闭数据库连接
$conn->close();
?>
创建HTML文件 代码如下