1. 程式人生 > >Exp8 Web基礎 20154308張珊珊

Exp8 Web基礎 20154308張珊珊

PE 表示 ext 控制 用戶 內容 基礎 一個 分享圖片

一.基礎問題回答

  • 什麽是表單?
    • 表單是一個包含表單元素的區域,表單元素是允許用戶在表單中(比如:文本域、下拉列表、單選框、復選框等等)輸入信息的元素,表單在網頁中主要負責數據采集功能,一個表單有三個基本組成部分:表單標簽、表單域、表單按鈕;
    • 表單標簽:這裏面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法;
    • 表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等;
    • 表單按鈕:包括提交按鈕、復位按鈕和一般按鈕,用於將數據傳送到服務器上的CGI腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處理工作。
  • 瀏覽器可以解析運行什麽語言?
    • 支持HTML(超文本標記語言)、XML(可擴展標記語言)以及Python、PHP、JavaScript、ASP等眾多腳本語言。
  • WebServer支持哪些動態語言?
    • JavaScript、ASP、PHP、Ruby等腳本語言。

      二.實踐過程

      1.Web前端HTML

  • 通過 service apache2 start開啟Apache,使用netstat -aptn查看確認端口占用
    技術分享圖片
  • 瀏覽器中輸入127.0.0.1:8080,登錄到Apache首頁驗證其可用
    技術分享圖片
  • 訪問Apache工作目錄cd /var/www/html,新建一個test1.html文件,並且編寫一個含有表單的html
    技術分享圖片
  • 訪問localhost/test1.html,設計表單時有設計兩個輸入框的初始值
    技術分享圖片
    登錄之後因為沒有編輯php所以無法連接

2.Web前端javascript

  • JavaScript是一種屬於網絡的腳本語言,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。
  • DOM:文檔對象模型,可以以一種獨立於平臺和語言的方式訪問和修改一個文檔的內容和結構。換句話說,這是表示和處理一個HTML或XML文檔的常用方法。
  • 編寫帶有驗證用戶名和密碼的規則功能的html
    技術分享圖片
  • 登陸網頁,並進行驗證
    技術分享圖片
    技術分享圖片

3.Mysql基礎

  • /etc/init.d/mysql start打開mysql服務
  • mysql -u root -p以root身份登錄,輸入默認密碼為password,進入Mysql
  • 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 SCHEMA4308zss;創建庫表
  • 輸入以下

  • 技術分享圖片
  • use 4308zss打開表,insert into users(userid,username,password,enabled) values(1,‘20154308‘,password("20154308"),"TRUE");進行內容的添加
    技術分享圖片

4.php基礎

  • PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
  • php安裝sudo apt-get install php
    技術分享圖片
  • 測試php。在原位置新建一個php文件
  • 技術分享圖片
  • 進入網址localhost/zss.php。OK的
    技術分享圖片

5.PHP+MySQL實現登錄網頁編寫

  • 在進行這一部分的實驗之前,要先理清楚html,php,mysql之間的關系。訪問網頁登錄時會連接到php,而php會連接到指定的數據庫,根據數據庫裏存在的記錄進行匹配進而判斷是否允許登錄。
  • 大部分代碼都差不多,我覺得起到這種連接作用的是:html裏的代碼是:<form method ="post" action="test.php" name="frmLogin" >,test.php是後面要用到的php文件,也就是連接到這裏;php裏的代碼是$query_str="SELECT * FROM users where username=‘{$uname}‘ and password=password(‘{$pwd}‘);"; users是之前mysql基礎裏新建的用戶,在這個用戶裏有我新建的記錄,用來匹配在網頁上輸入的用戶密碼是否正確。差不多就是這些,可以做實驗了。
  • 兩段最終的正確的代碼粘上來

html:

<html>
<head>  
<title>test</title>   
</head>
<body>
<table>
    <form method ="post" action="test.php" name="frmLogin"  >
    <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>

php:

<?php
  
$uname=($_POST["username"]);
$pwd=($_POST["password"]);

/* echo $uname; */

$query_str="SELECT * FROM users where username=‘{$uname}‘ and password=password(‘{$pwd}‘);";

/* echo "<br> {$query_str} <br>";*/

$mysqli = new mysqli("127.0.0.1", "zss", "20154308", "4308zss");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!";
/* Select queries return a resultset */
  • 訪問網址,並輸入正確的用戶名20154308和密碼20154308
    技術分享圖片

結果是這樣,連接到php文件了但是後面就壓根沒有去連接我的數據庫。檢查php文件
技術分享圖片
之前說的應該填users的地方我一開始填了4308zss,這是我新建的庫的名字啊,應該填用戶名啊,改掉!再次登錄是下面這樣。
技術分享圖片
連接到數據庫,但是匹配不了記錄。可能是users這個用戶的權限不夠,於是賦予它所有權限grant select,insert,update,delete on 4308zss.* to users@localhost identified by "20154308";
但是結果好像一模一樣,不可以!然後發現了我和某一個試驗成功的同學的代碼不一樣的地方

  • 下面改了之後正確的

技術分享圖片

  • 下面是不成功的代碼

技術分享圖片

細微的差別,可能是語法錯誤吧,最後改掉之後就ok了

下圖是匹配正確的結果

技術分享圖片

6.SQL註入攻擊

  • SQL註入攻擊:可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
  • 在登錄界面用戶名處輸入‘ or 1=1#,密碼隨意,發現可以成功登錄
    技術分享圖片
    技術分享圖片

  • 成功登陸的原因:
    select * from users where username=‘‘ or 1=1#‘ and password=‘‘,#是註釋符,將其後面的內容給註釋掉了,只剩下前面的1=1,當然是恒成立

7.xss攻擊

  • XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
  • 將圖片保存在/var/www/html下
  • 在登錄的用戶名中輸入:<img src="0.jpg" />haha</a>,密碼隨意
  • 結果是login failed!!!(忘了截圖)
  • 參照同學博客的解決方法

技術分享圖片

但是一樣的結果,也不可以……最後就是沒看見圖片

三.實踐總結

  • 做實驗還是要首先明白實驗思路以及包含的強烈的邏輯關系,搞清楚各個部分之間的關系,就比如這次的html,php,數據庫之間的關系,如何連接在一起撐起了一個網頁,雖然只是明白了一點皮毛但還是很有成就感!
  • 了解了一些針對網頁的攻擊sql註入,xss攻擊,很基礎的攻擊,但是也讓我們明白了很多原理,如果以後要做網頁開發的話就要格外註意。

Exp8 Web基礎 20154308張珊珊