add open_basedir intro

4.0
A.C.Sukazyo Eyre 2024-01-15 14:11:59 +08:00
parent edc4fd1c9d
commit d901f626d4
Signed by: Eyre_S
GPG Key ID: C17CE40291207874
5 changed files with 77 additions and 12 deletions

View File

@ -21,11 +21,16 @@
<Separator/> <Separator/>
<Page id="get-started">开始使用</Page> <Title>Tutorial</Title>
<Page id="web-server">Web 服务器配置</Page> <Page id="tutorial/get-started">开始使用</Page>
<Page id="tutorial/web-server">Web 服务器配置</Page>
<Separator /> <Separator />
<!-- <Title>Setup</Title>
<Page id="configurations/config-php">config.php</Page> -->
<Title>Configurations</Title>
<Chapter root="tools/"> <Chapter root="tools/">
<caption>页面选项</caption> <caption>页面选项</caption>
<Page id="code-highlight"><![CDATA[<small>Prism </small>代码高亮]]></Page> <Page id="code-highlight"><![CDATA[<small>Prism </small>代码高亮]]></Page>

View File

@ -0,0 +1,5 @@
# config.php
config.php 是一个用来为 ph-Bookshelf 设置 php 环境的脚本。
可以通过里面的字段来调整 ph-Bookshelf 的环境。

1
faq.md Normal file
View File

@ -0,0 +1 @@

View File

@ -1,7 +1,8 @@
--- ---
title: 开始使用 title: 开始使用
configurations: configurations:
prism.plugins: 'command-line' prism.plugins: 'command-line; treeview'
---
--- ---
跟随下面的指导,你将可以手动安装运行 ph-Bookshelf。 跟随下面的指导,你将可以手动安装运行 ph-Bookshelf。
@ -38,7 +39,7 @@ class="command-line"
data-user="root" data-user="root"
data-output="2-8, 14-19, 21-52" data-output="2-8, 14-19, 21-52"
><code class="lang-bash" ><code class="lang-bash"
>git clone https://github.com/suk-ws/ph-bookshelf.git your-bookshelf-website-root-dir >git clone https://github.com/suk-ws/ph-bookshelf.git ph-bookshelf
Cloning into 'ph-bookshelf'... Cloning into 'ph-bookshelf'...
remote: Enumerating objects: 860, done. remote: Enumerating objects: 860, done.
remote: Counting objects: 100% (390/390), done. remote: Counting objects: 100% (390/390), done.
@ -46,7 +47,7 @@ remote: Compressing objects: 100% (234/234), done.
remote: Total 860 (delta 212), reused 314 (delta 144), pack-reused 470 remote: Total 860 (delta 212), reused 314 (delta 144), pack-reused 470
Receiving objects: 100% (860/860), 822.58 KiB | 2.09 MiB/s, done. Receiving objects: 100% (860/860), 822.58 KiB | 2.09 MiB/s, done.
Resolving deltas: 100% (461/461), done. Resolving deltas: 100% (461/461), done.
cd your-bookshelf-website-root-dir cd ph-bookshelf
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php php composer-setup.php
@ -133,14 +134,67 @@ Alternatively, you can run Composer with `--ignore-platform-req=ext-xml --ignore
尝试安装 php 插件 `xml` 来解决问题。 尝试安装 php 插件 `xml` 来解决问题。
> 在最新版的 Debian 上,可以通过 apt 来安装 php 插件:`# apt install php-xml`{.lang-shell-session}。 > 对于不同的 php 安装方式,安装插件的方式也会有不同。如果你和我一样都是在 Debian 上通过仓库安装的最新版 php可以通过 apt 来安装 php 插件:`# apt install php-xml`{.lang-shell-session}。如果你是用的是其它的安装方式,尝试搜索 *php enable extension xml* 来解决这类问题。
>
> 在其它系统上,尝试搜索 *php enable extension xml* 来解决这类问题 ## 配置网站安全设置
*我们正在努力在代码层面实现保护以避免任何形式的攻击*
ph-bookshelf 默认并不会对能够打开的文件路径做出限制。这意味着在生产服务器上,你最好通过 PHP 的 [`open_basedir`](https://www.php.net/manual/en/ini.core.php#ini.open-basedir) 设置网站所能够访问的路径,以避免路径构建攻击。
最简单的方式,就是通过在网站根目录放置 `.user.ini` 文件并在此处设置 `open_basedir` 属性:
```ini
open_basedir = /path/to/your/ph-bookshelf
```
当然,这个属性也可以在 Apache 服务配置器中设置,像以下这样:
```apacheconf
<VirtualHost _default_:443>
ServerName book.example.com
DocumentRoot /path/to/your/ph-bookshelf
# ...any others
php_admin_value open_basedir /path/to/your/ph-bookshelf
# ...any others
</VirtualHost>
```
### 如果你使用了软链接
`open_basedir` 会解析文件的绝对链接然后进行访问控制,这意味着,如果你的网站,或者是你的 `/data` 目录是通过软连接挂载进来的,你需要在 `open_basedir` 里面添加上软链接的目标目录。
For example, 如果你的目录结构像是以下这样:
```treeview
/
|-- path/
| └── to/
| └── your/
| └── ph-bookshelf
| |-- .user.ini
| |-- .htaccess
| |-- index.php
| |-- data/ -> /data-drive/books
| └── ...
└── data-drive/
└── books/
└── bookshelf.xml
└── ...
```
那么你将需要这样设置 `open_basedir`
```ini
open_basedir = /path/to/your/ph-bookshelf:data-drive/books
```
## 完成搭建 ## 完成搭建
配置完成上面这些之后,你就可以将 `/path/to/your-bookshelf-website-root-dir` 作为你的 Web 服务器根目录来建立一个站点,至此,你已经完成了 ph-Bookshelf 站点的搭建。 配置完成上面这些之后,你就可以将 `/path/to/your/ph-bookshelf` 作为你的 Web 服务器根目录来建立一个站点,至此,你已经完成了 ph-Bookshelf 站点的搭建。
现在,在 `/path/to/your-bookshelf-website-root-dir/data` 目录下,你可以去配置你的 bookshelf.xml 和各种书籍了。 现在,在 `/path/to/your/ph-bookshelf/data` 目录下,你可以去配置你的 bookshelf.xml 和各种书籍了。
*未完待续* <!-- todo --> *data 模板正在 WIP 当中* <!-- todo -->

View File

@ -41,7 +41,7 @@ Module rewrite already enabled</code></pre>
然后,为你的 ph-Bookshelf 目录配置允许路径重写: 然后,为你的 ph-Bookshelf 目录配置允许路径重写:
```apacheconf ```apacheconf
<Directory /path/to/your/ph-Bookshelf> <Directory /path/to/your/ph-bookshelf>
AllowOverride All AllowOverride All
</Directory> </Directory>
``` ```