ブラウザのキャシュにあるフォーム入力データを完全に消去するには?

[上に] [前に] [次に]
いいづか [E-Mail] [HomePage] 1999/04/16(金) 02:46:27
現在僕はCGIとして起動されるPOP3クライアントを公開しています。
メールサーバへの認証を取るためにユーザからパスワードを入力
してもらうのですが、ほとんどのブラウザではキャッシュに
入っているページの中にPOP3接続時のパスワードが残ったままに
なってしまい危険な状態となってしまいます。
ブラウザに「キャッシュ内・履歴内にフォーム入力データを
残さないようにする」事を指示するための方法はなにかあるので
しょうか。

eXor 1999/04/16(金) 08:29:56
 キャッシュ自体が残らなければOKと思います。
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
 などのタグを利用すればいいのではないでしょうか?

Nobu3 1999/04/16(金) 13:39:48
試せる環境が無いので、できるのかはわかりませんが、
たとえばJavaScriptで制御するのはどうでしょう?
フォームの送信時にデータをクリアしてみるとか。

<script type="text/javascript">
<!--
function formErase(){
  namae=document.form1.namae.value;
  pass=document.form1.pass.value;
  document.form1.reset();
  location='なんとか.cgi?namae='+namae+'&pass='+pass; //ここは怪しい・・・
}
//-->
</script>

<form name=form1 action="なんとか.cgi">
<table>
<tr><td>Your Name<td><input name=namae type=text value="">
<tr><td>Password<td><input name=pass type=password value="">
</table>
<input type=submit value="送信" onclick="formErase();return false;">
<input type=reset value="やり直し">
</form>

メタタグの指定よりはブラウザが限定されるかもしれませんが、
"no-cache"が効かないのもあるかもしれないですし・・・
あと、キャッシュから消えるべき日付が指定できるタグもありましたね。ここのHTMLリファレンスの <META> にあったような気がします。
幾重にも対策するのが良いでしょう。たぶん。

羽崎 1999/04/17(土) 00:41:27
MIMEヘッダで
ドキュメントの有効期限をあらわす部分を過去の日付にすれば
キャッシュの有効期限切れになります。具体的な記述としてたとえば

Expires: Thu, 08 May 1997 12:00:00 GMT\n

を加えればブラウザは「キャッシュの有効期限切れ」を示します。

いいづか 1999/04/17(土) 01:38:30
いろいろとご指摘ありがとうございました。
ちょっと書き方が悪かったかも知れません。

no-cacheとExpires: はすでに試しておりましたが、
ここで行いたい処理は「ブラウザに表示されている
FORMの入力値・処理結果をブラウザの画面から消去する」
のではなく「POSTメソッドで要求した入力値をブラウザが
保持しているフォーム呼び出し用キャッシュから消去し、
有効期限切れの状態からリロードしてもCGIにパラメータが
わたらないようにする」というものです。
このようなMETA指定等は何かあるのでしょうか?

BASIC [E-Mail] 1999/04/17(土) 01:48:46
ようするに、よく掲示板とかで書き込みしたあと
ブラウザの更新ボタンを押すと、
IE4とかで「フォームデータの再構築?」とか聞かれて
「はい」と答えると再度情報が送信されてしまうって事ですよね?

BASIC [E-Mail] 1999/04/17(土) 01:50:04
↑「フォームデータの再投稿?」でした(^^;

ちなみに、ここでもなりますね

いいづか 1999/04/17(土) 02:03:20
> IE4とかで「フォームデータの再構築?」とか聞かれて
> 「はい」と答えると再度情報が送信されてしまうって事ですよね?
そうです。

Aurai [E-Mail] 1999/04/17(土) 08:00:48
毎回ユニークなPATH_INFOを付けるとか……

[上に] [前に] [次に]