ChatGPT WordPress自動投稿のためのWebメモ編集機能を基本認証で安全に実装する方法

技術系
スポンサーリンク

はじめに

前回の記事ではChatGPTを使用したWordPress自動投稿を実装しました。

しかしそのプログラムは、自宅でPCなどを開きPythonを動作させなければいけないので出先で記事を書きたい時などに困ります。またいちいちPythonを実行するのは面倒ですよね。

そこでこの記事では、前回作成したプログラムを自宅にいなくても使用できるようにWeb上から実行可能なようにアレンジします。

現代のウェブアプリケーションにおいて、セキュリティは最重要課題の一つ。特に、ユーザーが個人のメモを編集する機能はプライバシーに関わるため、信頼性の高いセキュリティ対策が求められます。

メモ機能の実装

ファイル構成

下記をまとめて任意のフォルダに格納します。

  • index.php
  • keyword.txt
  • .htaccess
  • .htpasswd

今回は簡単にkeyword.txtを編集できるようなphpを記述しました。

<?php
$filename = 'keyword.txt';
$post = $_POST['w'] ?? null;

// ファイルなければ作成
if (!file_exists($filename)) {
    touch($filename);
}

// ファイル読み込み(改行除去)
$lines = file($filename, FILE_IGNORE_NEW_LINES);

// 出力バッファ初期化
$message = "";

if ($post !== null) {
    // 数字なら削除モード
    if (is_numeric($post)) {
        $line_to_delete = intval($post) - 1;
        if (isset($lines[$line_to_delete])) {
            unset($lines[$line_to_delete]);
            file_put_contents($filename, implode("\n", $lines) . "\n");
            $message = ($line_to_delete + 1) . "行目を削除しました。";
        } else {
            $message = "指定した行は存在しません。";
        }
    } else {
        // 同一ワードがなければ末尾に追加
        if (in_array($post, $lines)) {
            $message = "「{$post}」はすでに存在しています。";
        } else {
            $lines[] = $post;
            file_put_contents($filename, implode("\n", $lines) . "\n");
            $message = "「{$post}」を末尾に追記しました。";
        }
    }
}
?>

<!-- HTML表示部分 -->
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>キーワード管理</title>
</head>
<body>
    <h1>現在のキーワード一覧</h1>
    <pre>
<?php
foreach ($lines as $i => $line) {
    echo ($i + 1) . ": " . htmlspecialchars($line) . "\n";
}
?>
    </pre>
    <form method="post">
        <input type="text" name="w" placeholder="キーワードまたは行番号を入力" required>
        <button type="submit">送信</button>
    </form>

    <?php if ($message): ?>
        <p><strong><?php echo htmlspecialchars($message); ?></strong></p>
    <?php endif; ?>

</body>
</html>

すばらしい。

しっかりweb GUI上からキーワードの管理ができます。

pythonをcron登録

ここまでくれば、定期的にkeywordファイルを読んでWordPress投稿してくれるようにcron登録するだけです。

基本認証とは

基本認証の仕組み

基本認証(Basic Authentication)は、HTTPプロトコルの一部で、ユーザー名とパスワードを使用してアクセス制御を行う方式です。ユーザーがアクセスする際、ブラウザは認証情報をサーバーに送信します。サーバー側では、この情報を基にユーザーの認証を行い、アクセスの許可または拒否を決定します。

基本認証の利点

基本認証の主な利点は以下の通りです。

  1. 簡易性:設定や実装が非常に簡単で、特別なライブラリを使わなくても実装可能です。
  2. 広範なサポート:多くのウェブサーバーやフレームワークが標準でサポートしています。
  3. クライアント側の負担が軽い:ブラウザが自動的に認証情報を管理し、再認証の手間が少ない。

Basic認証機能の実装

必要な環境の準備

.htaccessファイルを作成し、以下の内容を追加します。

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /フルパス/.htpasswd
Require valid-user

.htpasswdファイルを作成し、ユーザー名とパスワードを設定します。

平文でパスワードを保存しておくのは危ないので、以下のサイトなどを使用してフォーマットを作成します。

htpasswdファイル生成(作成)
htpasswdファイル生成(htpasswdファイル作成)するweb・ウェブ制作に役立つ便利ツール。htaccessを利用したユーザー認証によるアクセス制限(ベーシック認証)が可能です。

できた。すばらしい。

Webメモ編集機能を基本認証で実装する利点

1. プライバシーの確保

基本認証を導入することで、特定のユーザーのみがメモにアクセスできるため、プライバシーが保護されます。

2. 簡単な管理

基本認証は簡単な設定で済むため、管理が容易です。特に小規模なプロジェクトや個人のメモ管理には最適です。

3. コストの削減

高価なセキュリティソリューションを利用する必要がなく、手軽に実装できるため、コストを大幅に削減できます。
今回の例だと、悪い人がメモ帳にAIに悪さをさせるようなプロンプトを書く、またOpenAI APIの課金額が上がるようにたくさんのリクエストを書いておくなどの悪さが考えられます。対策しておいた方がいいですね。

4. ユーザビリティの向上

ユーザーは、パスワードを一度入力すれば以降は再認証不要なので、手間なくサービスを利用できます。

まとめ

Webメモ編集機能を基本認証で実装する方法とその利点について解説しました。
基本認証は、簡単な設定で強固なセキュリティを提供するため、多くのシステムで利用されています。それに加え、プライバシーの保護やコストの削減といった利点もあります。これらの知識を活かして、安全かつ使いやすいWebメモを実装してみてください。

参考文献

  1. Basic Authentication – MDN
  2. Web Security for Developers – O’Reilly
  3. Introduction to HTTPS – Let’s Encrypt

以上で、Webメモ編集機能を基本認証で安全に実装する方法とその利点について紹介しました。この記事が惹かれた方にとって、有益な情報となることを願っています。

スポンサーリンク
タイトルとURLをコピーしました