php資料庫安全——設計、串連和加密

來源:互聯網
上載者:User

設計資料庫

第一步一般都是建立資料庫,除非是使用第三方的資料庫服務。當建立一個資料庫的時候,會指定一個所有者來執行和建立語句。通常,只有所有者(或超級使用者)才有權對資料庫中的對象進行任意操作。如果想讓其他使用者使用,就必須賦予他們許可權。

應用程式永遠不要使用資料庫擁有者或超級使用者帳號來串連資料庫,因為這些帳號可以執行任意的操作,比如說修改資料庫結構(例如刪除一個表)或者清空整個資料庫的內容。

應該為程式的每個方面建立不同的資料庫帳號,並賦予對資料庫物件的極有限的許可權。僅分配給能完成其功能所需的許可權,避免同一個使用者可以完成另一個使用者的事情。這樣即使攻擊者利用程式漏洞取得了資料庫的存取權限,也最多隻能做到和該程式一樣的影響範圍。

鼓勵使用者不要把所有的事務邏輯都用 web 應用程式(即使用者的指令碼)來實現。最好用視圖(view)、觸發器(trigger)或者規則(rule)在資料庫層面完成。當系統升級的時候,需要為資料庫開闢新的介面,這時就必須重做所有的資料庫用戶端。除此之外,觸發器還可以透明和自動地處理欄位,並在偵錯工具和跟蹤事即時提供有用的資訊。

串連資料庫

把串連建立在 SSL 加密技術上可以增加用戶端和伺服器端通訊的安全性,或者 SSH 也可以用於加密用戶端和資料庫之間的串連。如果使用了這些技術的話,攻擊者要監視伺服器的通訊或者得到資料庫的資訊是很困難的。

加密儲存模型

SSL/SSH 能保護用戶端和伺服器端交換的資料,但 SSL/SSH 並不能保護資料庫中已有的資料。SSL 只是一個加密網路資料流的協議。

如果攻擊者取得了直接存取資料庫的許可(繞過 網頁伺服器),敏感性資料就可能暴露或者被濫用,除非資料庫自己保護了這些資訊。對資料庫內的資料加密是減少這類風險的有效途徑,但是只有很少的資料庫提供這些加密功能。

對於這個問題,有一個簡單的解決辦法,就是建立自己的加密機制,然後把它用在 PHP 程式內。PHP 有幾個擴充庫可以完成這個工作,比如說 Mcrypt 和 Mhash 等,它們包含多種加密運演算法則。指令碼在插入資料庫之前先把資料加密,以後提取出來時再解密。

對某些真正隱形資料,如果不需要以明文的形式存在(即不用顯示),可以考慮用散列演算法。使用散列演算法最常見的例子就是把密碼經過 MD5 加密後的散列存進資料庫來代替原來的純文字密碼。

Example #1 對密碼欄位進行散列加密

<?php    // 儲存密碼散列    $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",    pg_escape_string($username), md5($password));    $result = pg_query($connection, $query);    // 發送請求來驗證使用者密碼    $query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",    pg_escape_string($username), md5($password));    $result = pg_query($connection, $query);    if (pg_num_rows($result) > 0) {        echo 'Welcome, $username!';    } else {        echo 'Authentication failed for $username.';    }?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.