(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表(0.5分)javascript
(4)Web后端:编写PHP网页,链接数据库,进行用户认证(1分)php
1.kali默认已安装Apache,直接使用 service apache2 start 命令打开Apache服务便可。html
2.使用 cd /var/www/html 进入Apache目录下,新建一个简单的含有表单的html文件 simple_form.html :前端
1 <html> 2 <head> 3 <title>CryptoTeam</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 </head> 6 <body> 7 <h2>Login Quick</h2> 8 <form action="login" method="post"> 9 <input placeholder="E-mail" name="Name" class="user" type="email"> 10 <br> 11 </br> 12 <input placeholder="Password" name="Password" class="pass" type="password"> 13 <br> 14 </br> 15 <input type="submit" value="Login"> 16 </form> 17 </body> 18 </html>
1.在原有 simple_form.html 基础上,能够添加一段JavaScript代码,以完成对用户是否填写邮箱和密码的判断。修改后的 login_test.html 以下所示:java
1 <html> 2 <head> 3 <title>CryptoTeam</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 </head> 6 <body> 7 <h2>Login Quick</h2> 8 <form action="login" method="post" name="form_login"> 9 <input placeholder="E-mail" name="Email" class="user" type="email" onfocus="if (this.value=='Your email') this.value='';" /> 10 <br> 11 </br> 12 <input placeholder="Password" name="Password" class="pass" type="password" onfocus="if (this.value=='Your password') this.value='';"/> 13 <br> 14 </br> 15 <input type="submit" value="Login" onClick="return validateLogin()"/> 16 </form> 17 <script language="javascript"> 18 function validateLogin(){ 19 var sUserName = document.form_login.Email.value ; 20 var sPassword = document.form_login.Password.value ; 21 if ((sUserName =="") || (sUserName=="Your email")){ 22 alert("user email!"); 23 return false ; 24 } 25 if ((sPassword =="") || (sPassword=="Your password")){ 26 alert("password!"); 27 return false ; 28 } 29 } 30 </script> 31 </body> 32 </html>
2.在浏览器访问 file:///var/www/html/login_test.html ,若是用户邮箱或密码未填,网页会提示:mysql
1.输入 /etc/init.d/mysql start 开启MySQL服务web
2.输入 mysql -u root -p 使用root权限进入,默认的密码是password
sql
3.输入 update user set password=PASSWORD("newpassword") where user='root'; ,修改密码;输入 flush privileges; 更新权限数据库
4.输入 exit 退出数据库,使用新的密码登陆apache
5.使用 create database databasename; 创建数据库
6.使用 show databases; 查看存在的数据库
7.使用 use databasename; 使用咱们建立的数据库
8.使用 create table tablename; 创建数据库表,并设置字段基本信息
9.使用 show tables; 查看表信息
10.使用 insert into tablename values('1','2'); 插入数据
11.使用 select * from tablename; 查询表中的数据
12.在MySQL中增长新用户,使用 grant select,insert,update,delete on sql.* to username@localhost identified by "password";
13.增长新用户后,使用新的用户名和密码进行登陆
1.在 /var/www/html 目录下新建一个PHP测试文件 phptest.php ,简单了解一下它的一些语法
1 <?php 2 echo ($_GET["a"]); 3 include($_GET["a"]); 4 echo "This is my php test page!<br>"; 5 ?>
2.在浏览器网址栏中输入 localhost/phptest.php?a=/etc/passwd ,可看到 /etc/passwd 文件的内容
3.利用PHP和MySQL,结合以前编写的登陆网页进行登陆身份认证,修改后的 login.php 和 login.html
代码以下
1 <html> 2 <head> 3 <title>login</title> 4 </head> 5 <h1>Login</h1> 6 <body> 7 <table> 8 <form action="login.php" method="GET" name="form_login"> 9 <tr> 10 <td>username:</td> 11 <td><input type="text" name="username" size="20" maxlength="20"onfocus="if (this.value=='You name')this.value='';"/></td> 12 </tr> 13 <tr> 14 <td>password:</td> 15 <td><input type="password" name="password" size="20" maxlength="20"onfocus="if (this.value=='You password')this.value='';"/></td> 16 </tr> 17 <table> 18 <tr> 19 <td><input type="submit" name="login" value="submit"onClick="return validateLogin()"/></td> 20 <td><input type="reset" name="rs" value="reset"/></td> 21 </tr> 22 </table> 23 </from> 24 </table> 25 26 <script language="javascript"> 27 function validateLogin(){ 28 var sUserName = document.form_login.username.value ; 29 var sPassword = document.form_login.password.value ; 30 if ((sUserName =="") || (sUserName=="Your name")){ 31 alert("user email!"); 32 return false ; 33 } 34 35 if ((sPassword =="") || (sPassword=="Your password")){ 36 alert("password!"); 37 return false ; 38 } 39 40 } 41 </script> 42 43 </body> 44 </html>
1 <?php 2 $uname=($_GET["username"]); 3 $pwd=($_GET["password"]); 4 echo $uname; 5 $query_str="SELECT * FROM testtable where username='$uname' and password='$pwd';"; 6 $mysqli = new mysqli("127.0.0.1", "root", "123456", "xgh"); 7 8 /* check connection */ 9 if ($mysqli->connect_errno) { 10 printf("Connect failed: %s\n", $mysqli->connect_error); 11 exit(); 12 } 13 echo "connection ok!"; 14 /* Select queries return a resultset */ 15 if ($result = $mysqli->query($query_str)) { 16 if ($result->num_rows > 0 ){ 17 echo "<br> {$uname}:Welcome!!! <br> "; 18 } 19 else { 20 echo "<br> login failed!!!! <br> " ; } 21 /* free result set */ 22 $result->close(); 23 } 24 $mysqli->close(); 25 ?>
4.在浏览器输入 127.0.0.1/login.html 访问本身的登陆界面,并登陆本身的用户名和帐号
1 <?php 2 $uname=($_GET["username"]); 3 $pwd=($_GET["password"]); 4 echo $uname; 5 $query_str="SELECT * FROM login_table where username='$uname' and password='$pwd';"; 6 $mysqli = new mysqli("127.0.0.1", "root", "123456", "xgh"); 7 8 /* check connection */ 9 if ($mysqli->connect_errno) { 10 printf("Connect failed: %s\n", $mysqli->connect_error); 11 exit(); 12 } 13 echo "connection ok!"; 14 /* Select queries return a resultset */ 15 if ($result = $mysqli->query($query_str)) { 16 if ($result->num_rows > 0 ){ 17 echo "<br> {$uname}:Welcome!!! <br> "; 18 } 19 else { 20 echo "<br> login failed!!!! <br> " ; } 21 /* free result set */ 22 $result->close(); 23 } 24 $mysqli->close(); 25 ?>
再试一下看看,解决了
1.SQL注入
在用户名输入框输入 ' or 1=1# ,密码任意输入,可登录成功
1=1
是1,因此可以成功登录。2.XSS攻击
将图片放在 /var/www/html 目录下,在用户名输入框输入 <img src="tu.jpg" /> ,密码任意,就成功登陆
8.实践总结及体会
虽然上学期进行过关于MYSQL数据库学习,可是在网页编程上遇到了一些困难,原本打算仅依靠学长学姐博客来完成实验,可是发现模仿并不能解决问题,因此又参考网上资料从新编写HTML和PHP文件,最后成功地完成了试验。虽然过程比较艰难,但能成功完成实验仍是颇有收获的。