特定のパスにアクセスした時、1度しか情報が閲覧できないサーバを作る。
# 秘密のメッセージファイルを用意する
$ npm run reset
# → secret.txt が生成されていることを確認する
# サーバを起動する
$ npm start
2020-01-01T00:00:00.000Z Server started on 8080
# 通常ページへのアクセス
$ curl http://localhost:8080/
# → You accessed [/]
# 秘密のページへのアクセス (初回) : 秘密のメッセージが閲覧できる
$ curl http://localhost:8080/secret
# → Congratulations! This text can only be seen once!
# (secret.txt は削除される)
# 秘密のページへのアクセス (2回目以降) : 秘密のメッセージが閲覧できない
$ curl http://localhost:8080/secret
# → Already accessed.
- 秘密のメッセージを書き込んだ
secret.txt
を用意しておく - サーバ起動後、秘密のページへのアクセスがあったら
secret.txt
の中身を取得し、secret.txt
を削除してからレスポンスする → 秘密のメッセージが閲覧できる - 以降、秘密のページへのアクセスがあっても、
secret.txt
が存在しないため、秘密のメッセージが閲覧できない $ npm run reset
を実行すると、秘密のメッセージを書き込んだsecret.txt
を生成し直す
当初は、
- 秘密のページへのアクセス時、フラグファイルの存在チェックを行う
- フラグファイルが存在しなければ初回アクセスとみなし、フラグファイルを生成した上でレスポンスする → 秘密のメッセージが閲覧できる
- フラグファイルが存在すれば2度目以降のアクセスとみなし、秘密のメッセージをレスポンスしない
という実装を考えていたが、1度アクセスするとサーバ上からも秘密のメッセージが削除される方がよりセキュア (?) になるかと考え、この実装に至った。