1、實踐要求javascript
1.Web前端HTMLphp
能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。html
2.Web前端javascipt前端
理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。java
3.Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表mysql
4.Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證web
5.最簡單的SQL注入,XSS攻擊測試sql
功能描述:用戶能登錄,登錄用戶名密碼保存在數據庫中,登錄成功顯示歡迎頁面。數據庫
2、實踐過程apache
1.Web前端HTML
(1)kali中已經安裝了Apache2,使用指令 service apache2 start 啓動Apache服務。
若是開啓成功能夠看到以下:
(2)使用 cd /var/www/html 進入Apache目錄下,並新建一個html文件20164314form.html
html文件內容以下:
<html> <head> <title>CryptoTeam</title> <!-- Meta tag Keywords --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- Meta tag Keywords --> </head> <body> <!-- main --> <!--//header--> <h2>Login</h2> <form action="login" method="post"> <input placeholder="E-mail" name="Name" class="user" type="text"> <br> </br> <input placeholder="Password" name="Password" class="pass" type="password"> <br> </br> <input type="submit" value="Login"> </form> <!--//main--> </body> </html>
(3)在瀏覽器中嘗試打開
2.Web前端javascipt
(1)在原有 simple_form.html 基礎上,能夠添加一段JavaScript代碼,以完成對用戶是否填寫郵箱和密碼的判斷。
修改後的 login_test.html 以下:
<html> <head> <title>CryptoTeam</title> <!-- Meta tag Keywords --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- Meta tag Keywords --> </head> <body> <!-- main --> <!--//header--> <h2>Login</h2> <form action="login" method="post" name="form_login"> <input placeholder="E-mail" name="Email" class="user" type="text" onfocus="if (this.value=='Your email') this.value='';" /> <br> </br> <input placeholder="Password" name="Password" class="pass" type="password" onfocus="if (this.value=='Your password') this.value='';"/> <br> </br> <input type="submit" value="Login" onClick="return validateLogin()"/> </form> <!--//main--> <script language="javascript"> function validateLogin(){ var sUserName = document.form_login.Email.value ; var sPassword = document.form_login.Password.value ; if ((sUserName =="") || (sUserName=="Your email")){ alert("user email!"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("password!"); return false ; } } </script> </body> </html>
(2)在瀏覽器訪問 http://127.0.0.1/20164314form.html,若是用戶郵箱或密碼未填,網頁會報錯:
只輸用戶郵箱:
只輸密碼:
3.Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表
(1)輸入 /etc/init.d/mysql start 開啓MySQL服務
(2)輸入 mysql -u root -p 使用root權限進入,默認的密碼是password
(3)用 show databases; 查看數據庫基本信息
(4)輸入 use mysql; ,選擇使用mysql這個數據庫
(5)輸入 select user, password, host from user; 查看當前用戶信息
(6)輸入 update user set password=PASSWORD("20164321") where user='root';,修改密碼;
(7) 輸入 flush privileges; , 更新權限
(8)輸入 exit 退出數據庫,使用新的密碼登陸
(9)使用 create database gly; ,創建數據庫
(10)使用 show databases;,查看存在的數據庫
(11)使用 use gly; 使用咱們建立的數據庫;使用 create table 表名 (字段設定列表); 創建數據庫表,並設置字段基本信息
(12)使用 insert into 表名 values('值1','值2','值3'...); 插入數據,並使用 select * from 表名; 查詢表中的數據
(13)在MySQL中增長新用戶,使用 grant select,insert,update,delete on sql.* to username@localhost identified by "password";
(14)增長新用戶後,使用新的用戶名和密碼進行登陸
4.Web後端:編寫PHP網頁
1.在/var/www/html目錄下編寫一個PHP文件4314php.php
,利用PHP和MySQL,結合以前編寫的登陸網頁進行登陸身份認證
文件內容以下:
<?php
$uname=($_GET["username"]);
$pwd=($_GET["Password"]);
echo $uname;
$query_str="SELECT * FROM 4314_user where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "root", "123456", "4314gly");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> {$uname}:Welcome!!! <br> ";
}
else {
echo "<br> login failed!!!! <br> " ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>
5.最簡單的SQL注入,XSS攻擊測試
(1)SQL注入
SQL注入原理 是利用現有應用程序,將SQL命令注入到後臺數據庫引擎執行的能力,能夠經過在Web表單中輸入SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。
在用戶名輸入框輸入 ' or 1=1# ,密碼任意輸入,可登錄成功,
輸入的用戶名與select語句組合變成 select * from users where username='' or 1=1#' and password='' ,#起到註釋做用屏蔽了密碼判斷語句,而1=1是1,因此可以成功登錄。
(2)XSS攻擊
XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中,簡單說就是在網站任何接受正常文本輸入的地方,輸入Javascript腳本,並讓腳本執行。
將一張名爲4314.jpg的圖片放在/var/www/html目錄下,在用戶名輸入框輸入 <img src="4314.jpg" /> ,密碼任意輸入,就能夠讀取圖片。
3、基礎問題回答
(1)什麼是表單
表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框 等。表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。
(2)瀏覽器能夠解析運行什麼語言
瀏覽器能夠解析運行HTML、XML,javascript等腳本語言,對於JS腳本,會調用JS腳本引擎來處理,瀏覽器自己不處理程序代碼。
(3)WebServer支持哪些動態語言
Javascript、PHP、Ruby等腳本語言
4、實踐心得
經過此次實驗,較爲快速、系統地學習了一下Web的前端和後端,並將二者結合在一塊兒使用,此次實驗能夠說和咱們的互聯網活動息息相關,天天咱們訪問的每個網頁都是一段代碼,咱們還針對代碼的漏洞進行了攻擊(雖然如今絕大多數網站都能阻止),理解了代碼的含義,我以爲是很是有意義的。