20145218張曉涵_Web基礎

20145218張曉涵_Web基礎

基礎知識

  • Apache一個開放源碼的網頁服務器,能夠在大多數計算機操做系統中運行,因爲其多平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。它快速、可靠而且可經過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。它能夠運行在幾乎全部普遍使用的計算機平臺上。
  • PHP(Hypertext Preprocessor)超文本預處理器,是一種通用開源腳本語言,主要適用於Web開發領域。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多;PHP還能夠執行編譯後代碼,編譯能夠達到加密和優化代碼運行,使代碼運行更快。
  • SQL注入的原理是把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。咱們訪問百度時,http://www.baidu.com/,這個是一個正常的頁面請求語句,沒有涉及到任何動態請求數據庫的動做,因此這種狀況下不會有SQL注入。像http://www.example.com?userid=1這個URL請求,其中包含了一個Key-Value對經過這個URL語句能夠向數據庫發送userid的數據,從而進行「增刪改查」。也就是說"?"後面的數據是和數據庫打交道的,那麼在"?"後面跟的信息就有可能會被加入惡意的SQL語句。javascript

    實踐過程

    正常安裝、啓動Apache

  • 安裝:sudo apt-get install apache2
  • 啓動:apachectl start
  • Kali2的80端口被OpenVAS佔用了,將Apache2的端口改成8088
  • 查看端口占用狀況:netstat -aptn圖1
    php

  • 瀏覽器登陸到Apache首頁驗證其可用。圖2 出現了上一次實驗的假裝網頁
    html

  • Apache的工做目錄是/var/www/html,能夠測試apache是否可讀取工做目錄下的文件vi /var/www/html/test.txt,而後隨意輸入一串字符,瀏覽器打開 127.0.0.1:8088/test.txt,可看到test.txt的內容。圖3
    前端

編寫一個HTML做爲前端登陸界面

  • get與post
    • get是從服務器上獲取數據,post是向服務器傳送數據。
    • get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中能夠看到。post是經過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一塊兒傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
    • 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。
    • get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。
    • get安全性很是低,post安全性較高。可是執行效率卻比Post方法好。
  • 編寫一個含有表單的HTML 圖4
    java

  • 網頁效果如圖 圖5
    mysql

  • 測試php可正常工做 圖6 圖7
    web

javascript相關

  • JavaScript是一種普遍用於客戶端Web開發的腳本語言,經常使用來給HTML網頁添加動態功能,好比響應用戶的各類操做。
  • 文檔對象模型(Document Object Model,簡稱DOM,是W3C組織推薦的處理可擴展標誌語言的標準編程接口。
  • 編寫驗證用戶名和密碼的規則:用戶名密碼不能爲空,密碼長度在6-16之間
<script language="javascript">
function check(){
                 var Username =loginform.username.value;
                 var pwd =loginform.password.value;
                  if((Username == "")||(pwd == ""))//若是用戶名爲空

                  {
                        alert("用戶名或密碼不能爲空");
                        return false;
                  }
  if (pwd.length > 16 || pwd.length < 6)
  {
    alert("密碼長度應該在 6 - 16 位");
    return false;
  }
}

MYSQL

  • 安裝:apt-get install mysql
  • 啓動service start/stop/restart mysql
  • 登錄:mysql -u root -p,默認密碼爲p@ssw0rd
  • 查看基本信息:show databases; 圖8
    sql

  • 修改密碼:數據庫

mysql> use mysql; 
    mysql> select user, password, host from user;
    mysql>UPDATE user SET password=PASSWORD("new") WHERE user='root'; 
    mysql>flush privileges;
    mysql>quit; (退出)
  • 測試新密碼對不對apache

# mysql -u root -p
    Enter password:
  • 建立一個數據庫5218:CREATE SCHEMA5218;(爲何在網上查找的CREATE DATABASE 5218;這條語句不能夠)
  • 選擇所建立的數據庫:USE 5218
  • 建立一個數據庫表
    • 先看新的數據庫中存在什麼表:SHOW TABLES;
    • Empty set (0.00 sec)說明沒有數據庫表。圖10

    • 下面來建立一個數據庫表,圖11

    • 向表中添加用戶,圖12

實現登陸網頁編寫

  • 編寫登錄網頁login.html 圖13

  • 編寫PHP網頁鏈接數據庫 圖14

  • 在瀏覽器中輸入localhost:8088/login.html,訪問本身的登錄頁面 圖15

  • 在登陸頁面中輸入以前往數據庫中添加的用戶名和密碼,點擊提交,登錄成功 圖16

  • 轉到歡迎頁面,就是在php中加一行代碼header("Refresh:3;url=welcome.php");,3秒鐘後跳轉

SQL注入

  • sql查詢語句爲:select 列 from 表 where username= ? ,那麼當在SQL語句後加上 or 1=1 ,則會變成 : select 列 from 表 where username= ? or 1=1 ,或許能成功
  • 因此咱們的後臺語句:SELECT * FROM users WHERE username='' and password=('')要被變爲select * from users where username='' or 1=1#' and password=(''),在用戶名框中輸入 'or 1=1#,密碼隨便,能夠看到登錄成功 圖17

  • 同理能夠輸入語句';insert into users(userid,username,password,enabled) values(123,'zxh',password("20145218"),"TRUE");#來將用戶名和密碼保存到數據庫中,而後再輸入用戶名zxh,密碼20145218,就能夠登錄了

xss攻擊

  • 原理:攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
  • 在用戶名輸入框中輸入20145218讀取圖片,圖片和網頁代碼在同一文件夾下

問題回答

  • 什麼是表單
    • 表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分:
    • 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。
    • 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。
    • 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕。
  • 瀏覽器能夠解析運行什麼語言
    • 超文本標記語言:HTML
    • 可擴展標記語言:XML
    • 腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等
  • WebServer支持哪些動態語言
    • PHP語言、JSP語言

實驗感想

  • 上學期的時候接觸過一些網頁編程,可是學的比較簡單,此次還涉及到了sql注入及xss攻擊的知識,收穫比較大。可是過程很艱辛,一開始前端代碼用戶名密碼限制那一部分老編不對,以爲本身頗有道理其實並非,後來在不懈努力下終於成功了,很感動。
相關文章
相關標籤/搜索