(1)什麼是表單
表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。javascript
(2)瀏覽器能夠解析運行什麼語言。
html,css,javascript,若是想運行其餘語言,須要安裝插件。php
(3)WebServer支持哪些動態語言
python、nodejs、php、ruby等。css
2.實驗總結與體會
此次試驗作的很艱辛,一度把數據庫卸載了,而後虛擬機搞崩了,最後從新拷別人的虛擬機。主要難仍是在mysql那裏建立庫,表,填內容,查看修改,還有php,html文件的修改那裏,沒搞清楚關係的話就會一頭霧水,最後這裏不對那裏不對。因此作以前應該把順序什麼的理清楚,而後再作。其實弄明白了仍是挺簡單的。。。關鍵是要本身先把條理順清楚。html
使用apachectl start
開啓Apach,使用netstat -aptn
查看端口占用.因爲OPEN VAS使用80端口,把配置端口文件中把默認監聽端口改爲8088。前端
重啓Apache服務java
打開127.0.0.1:8088,測試服務是否已成功啓動.node
在/var/www/html文件夾下生成一個測試文件,測試網頁是否能調取文件夾中的文件python
(2) 簡單的網頁編寫mysql
表單相關知識web
(這個地方是我把端口號改爲4326以後的)
編寫一個簡單的登陸界面網頁。
登錄以後發現數據會傳送到 "html_form_action.php" 的頁面,因爲沒有對此頁面進行編輯,出現的是404
(3)測試php
建立testphp.php文件
(4)web前端javacipt
1.相關概念:JavaScript是一種普遍用於客戶端Web開發的腳本語言,經常使用來給HTML網頁添加動態功能,好比響應用戶的各類操做。
2.文檔對象模型(Document Object Model,簡稱DOM,是W3C組織推薦的處理可擴展標誌語言的標準編程接口。
3.編寫驗證用戶名和密碼的規則:(好比用戶名和密碼不能爲空)
String sql="select * from users where username="+"'"+username+"'";//定義一個查詢語句
ResultSet rs=db.executeQuery(sql);//運行上面的語句
if(rs.next())
{
if(password.equals(rs.getObject("password"))){ response.sendRedirect("loginsuccess.jsp"); //若是密碼匹配則跳轉至loginsuccess.jsp } else{ out.print("<script language='javaScript'> alert('密碼錯誤');</script>"); response.setHeader("refresh", "0;url=login.jsp"); } } else { out.print("<script language='javaScript'> alert('請輸入用戶名——else');</script>"); response.setHeader("refresh", "0;url=login.jsp"); }
(5)web後端
/etc/init.d/mysql start 啓動MySQL
mysql -u root –p
登陸MySQL,默認密碼爲p@ssw0rd
修改密碼:
輸入 use mysql; 選擇mysql數據庫
輸入 select user, password, host from user;
,顯示mysql庫中已有的用戶名、密碼與權限
輸入UPDATE user SET password=PASSWORD("新密碼") WHERE user='root';
更改用戶名root的密碼
輸入flush privileges;
,更新權限。
輸入quit
退出,從新輸入mysql -u root -p
從新進入,使用新密碼登陸成功,說明修改爲功
(這裏是昨晚把虛擬機弄崩了,剛剛拷了別人的,還沒來得及更名字截的圖)
創建數據庫,表,表內內容,和數據庫新用戶:
先創建一個數據庫:create database 庫名;
而後建立一個表:create table 表名 (字段設定列表);
接着輸入表中內容:insert into 表名 values('值1','值2','值3'...);
最後查詢表:select * from 表名;
創建新用戶:grant select,insert,update,delete on 數據庫.* to 用戶名@登陸主機
添加了新用戶以後退出去從新登錄:mysql -u yangqian -p(新用戶名)
而後查一查數據庫啊,表啊什麼的內容,能登進去應該就沒毛病了。
(6)mysql實現登錄網頁
進入編寫頁面
參考老師給的代碼:(php)
<?php
$uname=($_GET["username"]); $pwd=($_GET["password"]); /* echo $uname; */ $query_str="SELECT * FROM yqtable(這個是剛剛寫的表名) where username='{$uname}' and password='{$pwd}';"; /* echo "<br> {$query_str} <br>";*/ $mysqli = new mysqli("127.0.0.1", "yangqian", "4326", "yq");(yangqian是新用戶名,4326是登錄密碼,yq是數據庫名字) /* 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> Wellcome login Mr/Mrs:{$uname} <br> "; } else { echo "<br> login failed!!!! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
注意php文件黃色的地方:第一個是以前創建的代表,下面那一行,yangqian是以前建立的新的數據庫用戶,4326是密碼,yq是數據庫的庫名。
下面是html文件:
<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="4326login.php" name="frmLogin" > (記得必定要是剛剛你寫的那個php文件名字) <tr> <td>user</td> <td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value=='Your name') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td>password</td> <td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value=='Your password') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td><input type="checkbox" name="zlogin" value="1">auto login</td> </tr> <table> <tr> <td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td> <td><input type="reset" name="rs" value="reset" /></td> </tr> </table> </form> </table> <script language="javascript"> function validateLogin(){ var sUserName = document.frmLogin.username.value ; var sPassword = document.frmLogin.password.value ; if ((sUserName =="") || (sUserName=="Your name")){ alert("user name"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("password!"); return false ; } } </script> </body> </html>
輸入127.0.0.1:4326/4326login.html
自動跳轉到php頁面
輸入用戶名和密碼(剛剛你在表裏添加的用戶名和密碼)
(7)SQL注入,xss攻擊測試
SQL攻擊
所謂SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意的)SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。
在用戶名輸入框中輸入' or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句爲
select * from users where username='' or 1=1#' and password=md5('')
這時候電腦就會認爲#和後面的東西都是註釋
select * from users where username='' or 1=1
也就是說,上面的這一行纔是要執行的內容:選擇數據庫裏的用戶爲:xx或者1=1的時候就能夠容許登錄
1=1不就是永真式,那麼這個時候永遠均可以登錄。
先構造sql注入語句,在數據庫中添加數據。
';insert into yqtable values('11','11');#SELECT * FROM yqtable WHERE username='' insert into yqtable values('11','11');
系統收到的命令爲
SELECT * FROM yqtable where username='';insert into yqtable values('11','11');#SELECT * FROM yqtable WHERE username='' insert into yqtable values('11','11');
這個時候就等價於兩條語句:
SELECT * FROM yqtable WHERE username='';
insert into yqtable values('11','11');#SELECT * FROM yqtable WHERE username='' insert into yqtable values('11','11');
這個時候數據庫裏面確定會添加一個用戶名,可是不知道爲啥,個人數據庫就是添加不進去。。。。
因而我改代碼:';drop from yqtable where username='20154326';#
想讓它刪掉表裏的內容,但是它依然堅挺着死都不動一下。。。
因此最後我放棄了。。。
xss攻擊:
XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
首先把圖片拖到文件夾var/www/html中
用戶名那裏輸入<img src="tuzi.jpg" />haha</a>
這個好像是由於電腦的權限不夠,因而我輸入了chmod 777 /var/www/html/tuzi.jpg
授予任何人讀,寫,運行的權限