<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          設(shè)置open_basedir防止跨站攻擊

          共 1212字,需瀏覽 3分鐘

           ·

          2022-08-29 11:53

          目錄  隱藏 

          1 概述

          2 寶塔中的open_basedir設(shè)置

          3 測試是否生效

          4 不支持php框架的解決辦法

          概述

          通過設(shè)置open_basedir將 PHP 所能打開的文件限制在指定的目錄樹,包括文件本身。本指令不受安全模式打開或者關(guān)閉的影響。
          當(dāng)一個腳本試圖打開一個文件時,該文件的位置將被檢查。
          當(dāng)文件在指定的目錄樹之外時 PHP 將拒絕打開它。

          特別是當(dāng)服務(wù)器上有多個網(wǎng)站時,非常有必要設(shè)置open_basedir,防止黑客跨站攻擊。

          寶塔中的open_basedir設(shè)置

          在寶塔中設(shè)置open_basedir很方便,如圖所示:

          勾選上,則開啟了open_basedir。此時,網(wǎng)站根目錄下將出現(xiàn)一個.user.ini文件,打開該文件,可以看到如下內(nèi)容:

          1. open_basedir=/www/wwwroot/web/public/:/tmp/

          代表該網(wǎng)站擁有操作/www/wwwroot/web/public//tmp/這兩個目錄的文件操作權(quán)限,此外的目錄將不允許操作。

          測試是否生效

          在網(wǎng)站根目錄的上一級目錄(/www/wwwroot/web/)下新建一個文件README.md,隨便填寫一些內(nèi)容。然后在網(wǎng)站根目錄(/www/wwwroot/web/public/)新建一個file.php,內(nèi)容如下:

          1. <?php

          2. $content = file_get_contents("../README.md");

          3. var_dump($content);die;

          如果可以正常顯示README.md文件中的內(nèi)容,則代表沒有設(shè)置成功。
          如果報錯并顯示false,則代表設(shè)置成功。

          不支持php框架的解決辦法

          對于thinkphp、laravel等php框架,有一個public目錄,一般需要將網(wǎng)站根目錄設(shè)置為public目錄,public目錄下的index.php為唯一入口文件,但是index.php必然會引入上一級目錄中的文件,如果開啟了open_basedir,就會沒有權(quán)限引入,導(dǎo)致報錯并無法運行。

          那么問題來了,如果開啟open_basedir,框架無法運行,如果關(guān)閉open_basedir,就會導(dǎo)致被跨站攻擊的危險。
          最好的解決辦法是修改open_basedir的值,在原本的兩個目錄中添加上一級目錄(/www/wwwroot/web/)。

          1. open_basedir=/www/wwwroot/web/public/:/tmp/:/www/wwwroot/web/

          修改后,覆蓋.user.ini文件即可。
          如果提示沒有權(quán)限覆蓋是因為該文件默認取消了可修改權(quán)限,可以使用命令 chattr -i .user.ini 解除文件不可更動屬性,之后就可以修改/刪除.user.ini這個文件了
          覆蓋后,記得chattr +i .user.ini重新恢復(fù)文件不可更動屬性


          瀏覽 138
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  撸一撸操一操 | 日本一区区在线视频 | 91福利资源网 | 国产精品久久久九九性 | 国产精品高潮内射激情视频 |