Exp 8 Web基礎

Exp 8 Web基礎

1、基礎問題回答

(1)什麼是表單javascript

  • 表單是一個包含表單元素的區域。
  • 表單元素是容許用戶在表單中(好比:文本域、下拉列表、單選框、複選框等等)輸入信息的元素。
  • 表單使用表單標籤(
    )定義。

(2)瀏覽器能夠解析運行什麼語言。php

  • 超文本標記語言:HTML
  • 可擴展標記語言:XML
  • 腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等

(3)WebServer支持哪些動態語言html

  • ASP,JSP和PHP最爲經常使用

2、實踐內容

1.Web前端HTML前端

  • 正常安裝、啓動Apache
    • 安裝:sudo apt-get install apache2
    • 啓動:apachectl start
    • 查看端口占用狀況:netstat -aptn
      java

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

  • 編寫一個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
    • 網頁效果如圖
  • 編寫一個PHP做爲登陸成功的返回頁面
    • 編寫一個PHP
    • 網頁效果如圖

2.Web前端javasciptweb

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

                  {
                        alert("用戶名或密碼不能爲空");
                        return false;
                  }
  if (pwd.length > 16 || pwd.length < 6)
  {
    alert("密碼長度應該在 6 - 16 位");
    return false;
  }
  Form.submit();
}
</script>
  • 對於使用javascipt來控制登陸的時候須要修改以前的登陸代碼了,完善Form表單,而且將submit改成button,若是不改的話,就算輸入錯誤,也一樣能登錄成功。
  • 修改後的代碼
  • 測試結果

3.Web後端,MySQL基礎sql

  • 安裝:apt-get install mysql
  • 啓動/etc/init.d/mysql start
  • 登錄:mysql -u root -p
  • 查看基本信息:show databases;
  • 建立一個數據庫TestLogin:CREATE SCHEMA TestLogin;(爲何在網上查找的CREATE DATABASE TestLogin;這條語句不能夠)
  • 選擇所建立的數據庫:USE TestLogin
  • 建立一個數據庫表
    • 下面來建立一個數據庫表並添加用戶查詢以下:

4. Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證數據庫

  • 這裏咱們修改第二個任務的php文件,使之能夠查詢數據庫
    apache

  • 測試以下
    • 錯誤登陸:
    • 正確登陸:

5.最簡單的SQL注入,XSS攻擊測試

  • SQL注入
    • sql查詢語句爲:select 列 from 表 where username= ? ,那麼當在SQL語句後加上 or 1=1 ,則會變成 : select 列 from 表 where username= ? or 1=1 ,或許能成功
    • 因此咱們的後臺語句:SELECT username,password FROM users WHERE username='' and password=('')要被變爲select username,password from users where username='' or 1=1#' and password=(''),在用戶名框中輸入 'or 1=1#,密碼隨便,能夠看到登錄成功
    • 同理咱們能夠嘗試輸入語句';insert into users(userid,username,password,enabled) values(6666,'lzm',password("20155213"),"TRUE");#來將用戶名和密碼保存到數據庫中,而後再輸入用戶名lzm,密碼20155213,就能夠登錄了
    • 可是事實上不是這樣,會出現這樣的結果

      這裏的Failed是php代碼裏的 $result=mysqli_query($link,$sql)or die("Failed".mysql_error());

      下面是查詢獲得的結果

  • xss攻擊

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

    • 在用戶名輸入框中輸入<img src="5213.jpg" />讀取圖片,圖片和網頁代碼在同一文件夾下


      這裏實現的緣由就是在以前的php文件裏有句echo $user,這句話就是xss攻擊成功的關鍵,可是個人php寫的"太安全"了,就是當查詢出錯或者匹配出錯時,都不會運行echo $user這句代碼,但爲了博客效果,我就改了,將匹配出錯的那句echo"<script>alert('Wrong username or password !');history.go(-1);</script>";改爲了echo $user就成功出現了那張圖。

3、實驗感想

網頁編程上學期就有接觸過,但只是懂得一些表單的使用,就是一些簡單的HTML語言,沒有過多關注腳本語言在網頁編程的做用,如今接觸了一點,感受原來腳本語言很強大。

相關文章
相關標籤/搜索