htaccessによるベーシック認証の書き方（パスワード認証）

昨日こんなツイートをしました。このツイートを見ただけじゃベーシック認証の書き方などわからないとおもいます。ので今回はもう少し深堀していこうと思います。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ベーシック認証について<br><br>簡単に言うと<br>HTTPを用いた通信で扱うことのできるシンプルなユーザー認証方式のこと<br><br>htaccessの認証機能を利用することで、特定のURL（配下）にアクセスした場合、ページの表示前にパスワード認証機能をかける事ができる<a href="https://twitter.com/hashtag/%E3%83%99%E3%83%BC%E3%82%B7%E3%83%83%E3%82%AF%E8%AA%8D%E8%A8%BC?src=hash&amp;ref_src=twsrc%5Etfw">#ベーシック認証</a> <a href="https://twitter.com/hashtag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#プログラミング</a></p>&mdash; Tomoya (@div_tomo) <a href="https://twitter.com/div_tomo/status/1693628454871216633?ref_src=twsrc%5Etfw">August 21, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#### htaccessによるベーシック認証

>htaccessの認証機能を利用することで、特定のURLにアクセスした場合、ページの表示前にパスワード認証機能を設けることができます。
この機能によりアクセス制限することで、セキュリティーを高めることができます。
>
## フォルダを作成

まずは **app** **フォルダ**を作成しその中に **approval.php ファイル**を作成していきます。

```php
app
 |
 |-----> approval.php
```

今回は **.htacsece** で書いていきます。

**.htacsece** はアクセス制限がかかってくるので、あらかじめ必要な情報を記載する必要があります。それが以下の２つになります。

### **必要な情報**

<aside>
・パスワードを記録したファイルの場所

・実際のパスワード（暗号化）

</aside>

## **パスワードを記録したファイルの場所**

```php
echo __FILE__;
```

これでファイルの場所を表示することができます。

一応 **`echo`** で表示したファイルパスをコピーしておきましょう。自分の場合は以下

<aside>
📒 D:\xampp\htdocs\test\app\approval.php

</aside>

## **実際のパスワード（暗号化）**

```php
$password = 'SuTomSun0218';
//第一引数実際のパスワード   //第二引数でパスワードの暗号化
echo (password_hash($password, PASSWORD_BCRYPT));
```

まずパスワードとなる変数`$password`を用意して `'SuTomSun0218'` というパスワードを入れてあげます。

今回は `password_hash` を使って暗号化していきます。

**第１引数には実際のパスワード**を入れます。今回は`$password`

**第２引数にはパスワードの暗号**をしてくれる `PASSWORD_BCRYPT` を記載してあげています。

> 出力内容
> 

```php
$2y$10$9wY4taTKF0duyFBa5Kd5VObinepvtqn9l4FKrWNEEvVLemmSOT/nO
```

実際に確認してみると暗号化されていることがわかりますね。

## ファイルを作成

**app** **フォルダ** 内に `.htaccess` と `.htpasswd` というファイルを作成してください。

```php
app
 |
 |-----> approval.php
         .htaccess      //追加
         .htpasswd     //追加
```

[ . ]ドットをつける事で隠しファイルという扱いになります

## htaccessでベーシック認証するための書き方

> app > .htaccess
> 

```php
AuthType Basic
AuthName "IDとパスワードを入力してください"
AuthUserFile D:\xampp\htdocs\test\app\.htpasswd
require valid-user
```

### 説明

```php
AuthType Basic
```

と書くことでベーシック認証がかかることになります。

```php
AuthName "IDとパスワードを入力してください"
```

表示する文字

```php
AuthUserFile D:\xampp\htdocs\test\app\.htpasswd
```

パスワードを保管しているファイルのありかを示している。

先ほど　**パスワードを記録したファイルの場所**　でコピーしたファイルパスを記載してください。

最後の **approval.php** を消して **.htpasswd** に変えてあげればパスワードを保管しているファイルのありかを示す事ができます。

```php
require valid-user
//改行いれてね
```

としてあげると認証したユーザーだけが中に入れるようになります。

最後に**Enter**で改行するようにしてください。

## .htpasswdの書き方

ID:パスワードの形で書いていく必要があります。



```php
admin:$2y$10$9wY4taTKF0duyFBa5Kd5VObinepvtqn9l4FKrWNEEvVLemmSOT/nO

```

### 説明

IDが admin 

パスワードが、先ほど　**実際のパスワード（暗号化）**　でechoを使用し表示した暗号化されたパスワードを貼り付けてください

## 実際にログインしてみる

> URL
> 

```php
http://localhost/test/app/approval.php
```


![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3494399/e2e5bd76-3c07-5345-2ce5-85de93834cba.png)

ユーザー名 **admin**

パスワード **SuTomSun0218**

※この記事と同じであれば上の記述で問題ない

ログイン後 **app > approval.php** に遷移すればログイン成功です。