AIを使えば非エンジニアでもシステムは作れます。ただし「動くこと」と「安全であること」は別問題でした。この記事は、GASで自作したニュースレター配信システムに、公開直前で重大なセキュリティホールが見つかった話です。GASのgoogle.script.runの仕様を知らずにWebアプリを公開しようとしている方には、特に読んでほしい内容です。
前回までで、Googleグループを使った配信の仕組みと、送信数・開封率まわりの技術的な壁を越え、一通りの自動化が完成したところまで書きました。
ただ実は、「完成した」と思ってからも、まだいくつか壁がありました。
最初に運用でつまずいたのは、登録フォームの見え方でした。もともと、会社のWebサイトのページに、登録フォームをiframeで直接埋め込む形にしていました。ところが、ある日を境に、このフォームが急に表示されなくなりました。原因はこちらの実装ではなく、Google側の仕様変更でした。
そして、これが今回一番書きたかった話なのですが、運用を進める中で、セキュリティ的にかなりヒヤッとする設計ミスに気づきました。
GASには、google.script.runという仕組みがあります。ブラウザ側のJavaScriptからGAS側の関数を呼び出すための仕組みなのですが、ここに重要な仕様があります。同じプロジェクトから配信されているHTMLであれば、そのプロジェクト内にある全てのグローバル関数を呼び出せてしまうんです。
当初の自分の実装では、「誰でもアクセスできる登録フォーム」と「一斉送信や全購読者データの取得といった管理者向けの機能」を、同じ1つのGASプロジェクトの中に同居させていました。
つまり理屈の上では……
この続きはnoteで
この先では、「誰でも購読者データを抜けた状態だったことの詳細(本番前で良かった…)」「別のAIに相談したら、コードを書いたClaude自身が最初は指摘を認めなかった話」、そして「プロジェクト分割による解決策」を書いています。※解決策の具体的な設計部分は有料エリアです。
こみちが作成したニュースレターの実際の動作が気になる方はこちらからニュースレターをご登録してみてください!
コメント