標籤:www 儲存 mysql基礎 指令 網站 網路 開啟 網域名稱 oca
20145301趙嘉鑫《網路對抗》Exp8 Web基礎基礎問題回答什麼是表單?
瀏覽器可以解析運行什麼語言?
- 支援HTML(超文字標記語言 (HTML))、XML(可延伸標記語言 (XML))以及Python、PHP、JavaScript、ASP等(指令碼語言)。
WebServer支援哪些動態語言?
- JavaScript、ASP、PHP、Ruby等指令碼語言,
- JSP,是一個簡化的servlet設計,其web應用有好的跨平台性。
- ASP是微軟的伺服器端指令碼技術。
- PHP基於APACHE WEB SERVER,是一種通用開源指令碼語言。
實踐目標
(1)Web前端:HTML基礎
(2)Web前端:javascipt基礎
(3)Web後端:MySQL基礎
(4)Web後端:PHP基礎
(5)SQL注入,XSS攻擊測試
(6)發帖和會話管理的實現
Apache
- 本次Web開發是基於Apache伺服器進行的。
- 安裝指令sudo apt-get install apache2
- 對於Apache的配置可以輸入指令 sudo vi /etc/apache2/ports.conf指令來進行修改,連接埠改到了80。
- 指令apachectl start開啟Apache服務,使用netstat -aptn查看連接埠佔用。
- 如果連接埠被佔用,使用netstat -tupln |grep 80指令查看80連接埠被哪些進程佔用,用kill+進程ID殺死進程
- Apache服務開啟後,瀏覽器中輸入localhost:80進行查看,開啟了上次實驗複製的網頁,說明Apache正常工作。
HTML基礎與javascipt基礎
- cd var/www/html進入到Apache的工作目錄下,vi 5301.html建立一個含有表單的html,所以可以編寫一個簡單的登入頁面,並使用JavaScript來編寫一個驗證使用者名稱、密碼的規則,如果輸入的使用者名稱或者密碼為空白時,就彈出相應的對話方塊。具體代碼如下
前端代碼(html+js)
網頁效果:
Web後端:MySQL基礎
- 既然要登陸並驗證要涉及到到後台資料庫,MySQL就是一個資料庫管理系統,MySQL是開放的並且免費
先輸入/etc/init.d/mysql start指令開啟mysql服務,輸入mysql -u root -p,並根據提示輸入密碼,大家都說預設密碼為[email protected](但我的密碼很奇怪,居然為空白。。。),進入MySQL,輸入時注意有無分號:
對密碼進行修改:輸入use mysql;,選擇mysql資料庫;輸入update user set password=PASSWORD("新密碼") where user=‘root‘;
輸入flush privileges;,更新許可權;
接著輸入quit退出MySQL,重新進入,使用新密碼登入成功,說明修改成功:
輸入create database 庫名;建立一個資料庫;使用show databases;查看存在的資料庫;使用use 庫名;使用資料庫:
輸入create table 表名 ;建立資料表,使用show tables可以查看存在的資料表:
輸入insert into 表名 values(‘值1‘,‘值2‘,...);插入資料;使用select * from 表名查詢表中的資料:
MySQL中增加新使用者,輸入grant select(insert,update,delete) on 資料庫.* to 使用者名稱@登入主機 identified by "密碼";指令,增加新使用者成功:
Web後端:PHP基礎
- PHP是一種通用開源指令碼語言,PHP將程式嵌入到HTML文檔中去執行,執行效率比完全產生HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和最佳化代碼運行,使代碼運行更快。
在/var/www/html目錄下建立5301.php
利用PHP和MySQL結合之前編的登入網頁進行使用者身份認證,這裡可以參考老師給的代碼編寫login.php,代碼如下:
php代碼
其中127.0.0.1是本機地址,root是MySQL的使用者名稱,zjx5301是我之前設定的登入密碼,zjx_test是資料庫的庫名。
先將之前編的登入網頁的代碼中form的action屬性改成5301.php,在瀏覽器中輸入localhost:80/5301.html訪問登入頁面:
在登入頁面中輸入資料庫中存有的使用者名稱和密碼並點擊登入進行使用者認證,如果登入成功:
登入失敗:
SQL注入
SQL注入,就是通過把SQL命令插入到Web表單提交或輸入欄位名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。通過在Web表單中輸入(惡意)SQL語句得到一個存在安全性漏洞的網站上的資料庫。
在使用者名稱輸入框中輸入‘ or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句為select * from zjxtable where username=‘‘ or 1=1#‘ and password=‘‘,#相當於注釋符,而1=1是永真式,能夠成功登陸:
還可以通過SQL注入將使用者名稱和密碼儲存在資料庫中。修改一下之前的代碼,mysqli->query($query_str))
改成mysqli->multiquery($querystr))便能實現執行多個sql語句,接著在使用者名稱輸入框中輸入‘;insert into zjxtable values(‘wsc‘,‘5331‘);#,接著登入,出現如下所示頁面:
我們可以在資料庫中查詢一下是否添加成功:
使用新插入的使用者名稱和密碼進行登入,登入成功:
XSS攻擊測試
20145301趙嘉鑫《網路對抗》Exp8 Web基礎