(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文件,最後成功地完成了試驗。雖然過程比較艱難,但能成功完成實驗仍是頗有收穫的。