Exp8 Web基礎 20154308張珊珊

一.基礎問題回答

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

      二.實踐過程

      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;建立庫表
  • 輸入如下php

  • use 4308zss打開表,insert into users(userid,username,password,enabled) values(1,'20154308',password("20154308"),"TRUE");進行內容的添加
    html

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:java

<?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";
可是結果好像如出一轍,不能夠!而後發現了我和某一個試驗成功的同窗的代碼不同的地方mysql

  • 下面改了以後正確的

  • 下面是不成功的代碼

細微的差異,多是語法錯誤吧,最後改掉以後就ok了web

下圖是匹配正確的結果sql

6.SQL注入攻擊

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

    數據庫

  • 成功登錄的緣由:
    select * from users where username='' or 1=1#' and password='',#是註釋符,將其後面的內容給註釋掉了,只剩下前面的1=1,固然是恆成立apache

7.xss攻擊

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

可是同樣的結果,也不能夠……最後就是沒看見圖片

三.實踐總結

  • 作實驗仍是要首先明白實驗思路以及包含的強烈的邏輯關係,搞清楚各個部分之間的關係,就好比此次的html,php,數據庫之間的關係,如何鏈接在一塊兒撐起了一個網頁,雖然只是明白了一點皮毛但仍是頗有成就感!
  • 瞭解了一些針對網頁的攻擊sql注入,xss攻擊,很基礎的攻擊,可是也讓咱們明白了不少原理,若是之後要作網頁開發的話就要格外注意。
相關文章
相關標籤/搜索