非エンジニアがニュースレター配信ツールを自作した話(3)公開直前に見つかったセキュリティの穴

AI

AIを使えば非エンジニアでもシステムは作れます。ただし「動くこと」と「安全であること」は別問題でした。この記事は、GASで自作したニュースレター配信システムに、公開直前で重大なセキュリティホールが見つかった話です。GASのgoogle.script.runの仕様を知らずにWebアプリを公開しようとしている方には、特に読んでほしい内容です。

前回までで、Googleグループを使った配信の仕組みと、送信数・開封率まわりの技術的な壁を越え、一通りの自動化が完成したところまで書きました。

ただ実は、「完成した」と思ってからも、まだいくつか壁がありました。

最初に運用でつまずいたのは、登録フォームの見え方でした。もともと、会社のWebサイトのページに、登録フォームをiframeで直接埋め込む形にしていました。ところが、ある日を境に、このフォームが急に表示されなくなりました。原因はこちらの実装ではなく、Google側の仕様変更でした。

そして、これが今回一番書きたかった話なのですが、運用を進める中で、セキュリティ的にかなりヒヤッとする設計ミスに気づきました。

GASには、google.script.runという仕組みがあります。ブラウザ側のJavaScriptからGAS側の関数を呼び出すための仕組みなのですが、ここに重要な仕様があります。同じプロジェクトから配信されているHTMLであれば、そのプロジェクト内にある全てのグローバル関数を呼び出せてしまうんです。

当初の自分の実装では、「誰でもアクセスできる登録フォーム」と「一斉送信や全購読者データの取得といった管理者向けの機能」を、同じ1つのGASプロジェクトの中に同居させていました。

つまり理屈の上では……

この続きはnoteで

この先では、「誰でも購読者データを抜けた状態だったことの詳細(本番前で良かった…)」「別のAIに相談したら、コードを書いたClaude自身が最初は指摘を認めなかった話」、そして「プロジェクト分割による解決策」を書いています。※解決策の具体的な設計部分は有料エリアです。

続きを読む(note)

こみちが作成したニュースレターの実際の動作が気になる方はこちらからニュースレターをご登録してみてください!

komichi

komichi

気づいたらアラサー突入! ぐーたら生きつつ、 でも堅実に でも享楽的に

関連記事

おすすめ記事2

コメント

この記事へのコメントはありません。

komichi

komichi

気づいたらアラサー突入! 新卒1年目から本業×副業をしているkomichiです。「自分のできる範囲で地道にコツコツ」をモットーに日々を生きています。 ぐーたら生きつつ、でも堅実にでも享楽的に

TOP