アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。

ローカルに保存しているhtmlにフォームを配置しある値を格納した後、そのデータをサーバー上にPOSTするとエラーにならずサーバー側で処理を行ってしまいます。
これをさせないようにするにはどのようにしたらよいか教えてください。

環境はRedhatLinux7.2+apache1.3.26+php4.2.2です。
例として、サーバとは違うPCのローカルに置いたHTMLファイルの内容は以下のようにします。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action="http://www.hogehoge.com/test.php" method="post">
<INPUT size="20" type="text" name="test">
<INPUT type="submit" name="submit" value="送信"></FORM>
</BODY>
</HTML>

そしてサーバにあるtest.phpの内容は以下のようにします。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE></TITLE>
</HEAD>
<BODY>
<?

print $test;

?>
</BODY>
</HTML>

このローカルのhtml内のテキストボックスに何か入力して送信ボタンを押すとtest.phpでその内容が表示されてしまうのです。これを防ぐ方法を探しています。
つまり同じサイト内(http://www.hogehoge.com/にあるファイル)からのPOSTしか受け付けないようにしたいのです。
ちなみにregister_globalはOnにしてありますがOffにしても変数を$_POST["test"]にすると表示されます。

よろしくお願い致します。

A 回答 (4件)

test.php で、HTTP_REFERER が

http://www.hogehoge.com/~ であることを
チェックして、そうじゃなければ、処理をせずに抜けちゃう、もしくは、エラーページに飛ばす。
    • good
    • 0
この回答へのお礼

ありがとうございます。

やはり$_SERVER['HTTP_REFERER']をチェックする方法しかないのでしょうか。
なるべくグローバルな設定で切り抜けられないかと思ったのですが・・・。

apache側の設定で拒否する方法とかはないでしょうか?

お礼日時:2002/10/30 15:54

> apache側の設定で拒否する方法とかはないでしょうか?



試してないけど、こんな感じでできるかも。

SetEnvIf Referer www\.hogehoge\.com valid_referer
<Directory /~>
 Order Deny,Allow
 Deny from all
 Allow from env=valid_referer
</Directory>
    • good
    • 0

なるほど、そこまで深い実情だったんですね。



私も#2の方と同じ解決法を取ると思います。
    • good
    • 0

あの・・・


基本的にHTMLというのはローカルで動いているんです。
サーバー上にあるHTMLをHTTPでローカルに転送し、
一時領域に取り込んでブラウザで表示しているんです。

<FORM action="http://www.hogehoge.com/test.php" method="post">
とフルパスで書いてある以上、POSTが成功するのは当然です。
相対パスで記述すればOKなのではないでしょうか???

この回答への補足

ありがとうございます。

いくら相対パスで記述していても、フォームのあるページをユーザがダウンロードしてactionのところを目的URLに変えて自分のPCなどで保存してPOSTすれば処理されてしまいますよね?
それをされたくないので質問をさせていただいたのです。

あいまいな質問ですいませんでした。

補足日時:2002/10/30 15:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!