Exp8 web基礎 20154326楊茜

回答問題

(1)什麼是表單
表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。javascript

(2)瀏覽器能夠解析運行什麼語言。
html,css,javascript,若是想運行其餘語言,須要安裝插件。php

(3)WebServer支持哪些動態語言
python、nodejs、php、ruby等。css

2.實驗總結與體會
此次試驗作的很艱辛,一度把數據庫卸載了,而後虛擬機搞崩了,最後從新拷別人的虛擬機。主要難仍是在mysql那裏建立庫,表,填內容,查看修改,還有php,html文件的修改那裏,沒搞清楚關係的話就會一頭霧水,最後這裏不對那裏不對。因此作以前應該把順序什麼的理清楚,而後再作。其實弄明白了仍是挺簡單的。。。關鍵是要本身先把條理順清楚。html

實驗步驟

(1)準備工做

  • 使用apachectl start開啓Apach,使用netstat -aptn查看端口占用.因爲OPEN VAS使用80端口,把配置端口文件中把默認監聽端口改爲8088。前端

重啓Apache服務java

打開127.0.0.1:8088,測試服務是否已成功啓動.node

在/var/www/html文件夾下生成一個測試文件,測試網頁是否能調取文件夾中的文件python

(2) 簡單的網頁編寫mysql

表單相關知識web

  • 表單在網頁中主要負責數據採集功能
  • 一個表單有三個基本組成部分: 表單標籤
  • 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等
  • 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕.表單按鈕能夠用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做

(這個地方是我把端口號改爲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注入

 

先構造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授予任何人讀,寫,運行的權限

相關文章
相關標籤/搜索