(1).Web前端HTML(0.5分)php
能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。html
(2).Web前端javascipt(0.5分)前端
理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。java
(3).Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表(0.5分)mysql
(4).Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證(0.5分)web
(5).最簡單的SQL注入,XSS攻擊測試(0.5分)sql
功能描述:用戶能登錄,登錄用戶名密碼保存在數據庫中,登錄成功顯示歡迎頁面。數據庫
使用sudo vi /etc/apache2/ports.conf
命令修改Apache所要使用的端口號。
使用service apache2 start
命令開啓Apache服務
在瀏覽器中,輸入localhost:80
,在Apache的工做目錄下/var/www/html編輯一個測試文件,咱們就能夠只在在網頁打開看到了apache
編寫一個簡單網頁,包含一個表單,輸出用戶名、密碼而後提交,提交以後會跳轉到「login.php」編程
在Apache的工做目錄下新建一個html文件並經過瀏覽器打開
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>登錄頁面</title> </head> <body> <center> <H1 class=denglu>登錄界面</H1> </center> <center> <form action="login" method="post"> <input type="text" name = "username" /> <br><br> <input type="password" name = "password"> <br> <input type = "submit" value = "提交"> <input type = "reset" value = "重置"> </form> <br> <br> <br> <br> <br> <div class="content"> </div> </center> <body background="http://soft.images.lcsxjw.com/uploads/20190215/70ca7b36d1651fc656789dc401535e18.jpg" width="100%" height="100%" ;left:0;top:0"></body> </body> </html>
GET: 從指定的資源請求數據
POST: 向指定的資源提交要被處理的數據。
區別:
1.post更安全(不會做爲url的一部分,不會被緩存、保存在服務器日誌、以及瀏覽器瀏覽記錄中)
2.post發送的數據更大(get有url長度限制)
3.post能發送更多的數據類型(get只能發送ASCII字符)
4.post比get慢,post請求包含更多的請求頭,且post在接受數據以前會先將請求頭髮送給服務器進行確認,而後再發送數據。
5.post用於修改和寫入數據,get通常用於搜索排序和篩選之類的操做,目的是資源的獲取,讀取數據
6.get會將數據緩存起來,post不會
在上面的.html的基礎上添加一段Javascript代碼,來完成對用戶是否填寫用戶名和密碼的判斷。
添加的代碼:
function validateLogin(){
var sUserName = document.form_login.Name.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>
當沒有填寫信息的時候,會出現如下的提示。
使用/etc/init.d/mysql start
命令開啓mysql服務
使用mysql -u root -p
命令,並輸入默認密碼password
登陸,進入mysql中。
- 使用
use mysql;
命令,選擇mysql數據庫;- 使用
update user set password=PASSWORD("wyhy") where user='root';
命令對root帳號的密碼進行修改- 使用
flush privileges;
命令進行權限更新。
使用quit
命令退出數據庫以後,再次進行登陸,登陸成功,說明就改密碼無誤。
使用create database wyhy5231;
命令創建一個新的數據庫
使用show databases;
命令查看當前存在的數據庫。
使用use 庫名
命令,對數據庫進行使用
使用create table 表名 (字段設定列表);
命令,在咱們的數據庫中創建數據表
使用show tables命令
對該數據表進行查看
使用insert into 表名 values('值1','值2','值3'...);
命令,在數據表中填寫相應的數據
使用select * from 表名
命令,查詢該表中的數據
使用grant select,insert,update,delete on 數據庫.* to 用戶名@登陸主機 identified by "密碼";
命令 在數據庫中增長新的用戶。
PHP:超文本預處理器,是一種通用開源腳本語言。PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,還能夠執行編譯後代碼,編譯能夠達到加密和優化代碼運行,使代碼運行更快。
在目錄/var/www/html
下新建一個PHP測試文件
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is lxm php test page!<br>";
?>
在瀏覽器中輸入localhost:80/wyhy.php?a=/etc/passwd
,可以查看到/etc/passwd
文件中的內容
測試完後,利用PHP和MYSQL二者結合再加上以前編寫的簡單的登錄網頁進行身份驗證
$uname=$_POST["text"];
$pwd=$_POST["Password"];
echo $uname;
$query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "yhooyon", "wyhy1997", "wyhy5231");
/* 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();
?>
mysql中填寫的是以前在數據庫中的數據。
而後將以前編寫的登陸頁面的action
部分改成.php
,這樣網頁登陸後就會跳轉到login.php
在.php代碼中,$mysqli = new mysqli("127.0.0.1", "user", "password", "DB");
user —— mysql登陸的用戶名
password —— mysql登陸的密碼
DB —— 數據庫的名字
在瀏覽器中輸入地址127.0.0.1/5231.html
訪問本身的登陸頁面,輸入數據庫中的用戶名和密碼進行用戶認證
登錄成功,如圖所示:
SQL注入
SQL注入:經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
將SQL查詢語句改成select * from wyhy where username='' or 1=1#' and password=''
,此時在用戶名輸入框中輸入' or 1=1#
會發現隨便輸入什麼密碼,網頁都會登陸成功。
(#至關於註釋符,將後面的內容都變爲註釋,1=1是永真式,因此這個式子恆成立)
> XSS攻擊: XSS攻擊全稱跨站腳本攻擊,是爲不和層疊樣式表的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS,XSS是一種在web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
將一張圖片存於/var/www/html
目錄下
使用<img src="wyhy.jpeg" />
命令在網頁中就能夠讀取這張圖片
(1)什麼是表單
表單在網頁中主要負責數據採集功能。
一個表單有三個基本組成部分:
表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。
表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。
表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。
(2)瀏覽器能夠解析運行什麼語言。
HTML(超文本標記語言)、Python、PHP、JavaScript、ASP等衆多腳本語言。
(3)WebServer支持哪些動態語言
ASP、JSP、PHP
此次實驗充分使用了上學期網絡安全編程大實驗的網頁界面,算是省了不少時間,看代碼也不是很難。