iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
4
Security

資安這條路─以自建漏洞環境學習資訊安全系列 第 3

資安這條路 03 - [基礎知識] Docker & Docker-compose & PHP 基本資訊

安裝 docker & docker-compose

  • 老樣子為了追求快速,因此透過 docker-compose 建立一個 PHP 環境來練習
  • 快速安裝 docker 跟 docker-compose
  1. 更新 Ubuntu 套件庫
    • sudo apt-get update
  2. 安裝所需套件
    • sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  3. 透過 curl 下載外部 docker 來源的金鑰
    • wget https://download.docker.com/linux/ubuntu/gpg
  4. 並匯入該金鑰
    • sudo apt-key add gpg
  5. 將外部的 repository 來源匯入
    • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
  6. 接著開始安裝Docker套件
    • sudo apt-get install docker-ce
  7. 最後加入使用者的帳號進入 docker 群組
    • sudo gpasswd -a ${USER} docker
  8. 確認安裝後的 Docekr 服務是否執行 (兩者擇一即可)
    • sudo service docker status
    • sudo systemctl status docker
  9. 最後我們要重啟我們的 terminal
    • bash
  10. 從 docker 的 compose 專案拉檔案下來
    • sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  11. 增加執行權限
    • sudo chmod +x /usr/local/bin/docker-compose

建立 PHP 環境

  1. 開新資料夾並新增檔案,檔案名稱為 docker-compose.yml
    • vim docker-compose.yml
  2. docker-compose.yml 加入以下設定檔
    version: "2"
    services:
        web:
            image: php:7-apache
            ports:
                - "8080:80"
            volumes:
                - ./server:/var/www/html/
    volumes:
        persistent:
    networks:
        default:
            driver: bridge
    
  3. 在資料夾裡面在新增一個 server 的資料夾
    • 網站架構目前如圖所示
  4. server 資料夾為我們放 php code 的地方
  5. 進入 server
  6. 新增 phpinfo.php 的檔案
    <?php
    phpinfo();
    ?>
    
    • PHP 中 phpinfo() 這個函式是 PHP 內建函式,用來提供系統上與 PHP 有關的資訊
      • PHP 版本(PHP version )
      • 擴展(extensions)
      • 伺服器訊息(server information)
      • 伺服器環境(environment)
      • 作業系統版本資訊(OS version information)
  7. 回到上一層,跟 docker-compose.yml 同一層
  8. 執行 docker-compose up -d
  9. 打開瀏覽器 IP:8080/phpinfo.php 就會看到 PHP 資訊

練習 PHP

  • PHP
    • 常跟 Apache (伺服器軟體)、MySQL (資料庫管理系統)一起使用
    • 跨平台、語法簡單
  • echo
    • 用來印出字串或變數
    • 在我們的 server資料夾中新增 hello.php 並輸入以下內容
    • 透過 ; 去當作結尾的符號
    <?php
    echo 'Hello PHP!';
    ?>
    <h1> Hello 你好 </h1>
    
    • 打開瀏覽器 IP:8080/hello.php 就會看到畫面印出 Hello PHP!
  • if 判斷
    • PHP 中也有 if
    • 宣告變數透過 $ 字號
    <?php
    $num = 10;
    $meow = 1;
    if( $num > $meow ){
        echo 'num > meow';
    }else{
        echo 'num < meow';
    }
    ?>
    
  • 比較
    • > 大於
    • < 小於
    • == 等於
  • PHP 當中雙引號可以去解析變數
  • 數字
    <?php
    $a=1;
    $b=-1;
    $c=046;//首補 0 為八進位
    $d=0xAA;//字首 0x 為十六進位
    ?>
    
  • var_dump 該函式可以印出變數內容
  • boolean
    • 0 / FALSE :表假或否
    • 1 / TRUE :表真或是
  • array
    • 自定義陣列
    <?php
     $tmpa = array(8,9,72);
     $tmpb = 6.8;
     $tmpc = array('apple','orange')
     var_dump($tmpa,$tmpb,$tmpc);
    ?>
    
  • function
    • 也可以自訂 function
    <?php
    table();
    function table() {
    echo 'hello';
    }
    table();
    ?>
    
  • 常用內建 method
    • sort()
      • 排序
    • count()
      • 回傳長度
    • var_dump()
      • 輸出變數類型
    • substr()
      • 擷取字串
    • explode()
      • 將字串拆解

上一篇
資安這條路 02 - [基礎知識] HTML、JavaScript、HTTP
下一篇
資安這條路 04 - [Injection] SQL injection
系列文
資安這條路─以自建漏洞環境學習資訊安全31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
HoiDam
iT邦新手 5 級 ‧ 2020-09-21 15:35:21

你這個是linux的安裝方法?

飛飛 iT邦新手 1 級 ‧ 2020-09-21 21:27:15 檢舉

目前是 Linux 之後會更新 Windows 的 docker 安裝方法~

我要留言

立即登入留言