電子書籍の厳選無料作品が豊富!

プログラムど素人です

いくつか質問させてください

自分自身に対してpostやgetする場合、セキュリティは大丈夫でしょうか?$_SERVER['PHP_SELF']を使うと危ないときいたので気になっています

下記の場合はどうですか?自分自身にポストする場合はファイル名で指定しても大丈夫ですか?(hoge.phpは自分自身)
<form method="post" action="<?php echo hoge.php ; ?>">

getで自分自身に送るときはファイル名で大丈夫でしょうか?
header("Location: hoge.php?msg={$msg}");




もう一つ、フォームの送信ボタンをjavascriptのdocument.writeで表示してもセキュリティ的に問題ないでしょうか?(変なロボットがくるのでその対策です。javascriptはよみこんでないようなので)

document.write('<input type="submit" value="書き込む" />');

よろしくお願いします

A 回答 (3件)

スクリプトで決まった内容を展開するのであれば(ユーザーの入力値を扱うのでなければ)「送る側」を気にする必要はありません。



問題は「受け取る側」です。

どうやってhtmlを生成しようがJavaScriptを絡めようが、想定していないパラメータが(GETでもPOSTでも)送られてくることはあります。当然ですが想定していないものは不正アクセスとして処理するようにしなければいけません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
つまり、ページングなどのパラメータも含めて、全てのgetやpostにhtmlspecialchars($_REQUEST['mode'], ENT_QUOTES);をしておけばxssは防げるのでしょうか?

お礼日時:2014/01/19 03:50

>例えばこんな感じでgetを自分自身に送ってもセキュリティ的に大丈夫でしょうか?


<a href="hoge_list.php?mode=desc">投稿の新しい順</a>
htmlの埋め込みのこれ簡単に書き換えれるぞ。
FireFox+FirebugなどでだからPOSTで送ろうがGETで送ろうがチェック処理は絶対に必須。
それと、GETのhoge_list.php?mode=descこれ。アドレスパーに貼り付けて書き換えたら
簡単にGETパラメータ送信できること理解できる?
    • good
    • 0
この回答へのお礼

回答ありがとうございます
質問にコードを書くべきでしたすいません
getの値を変更してきてもチェックしてはしています
これでXSS対策は大丈夫でしょうか?


if(isset($_REQUEST['mode']) && is_string($_REQUEST['mode'])){
$mode = htmlspecialchars($_REQUEST['mode'], ENT_QUOTES);
}else{
$mode='';
}

if($mode=='desc'){
処理
}

お礼日時:2014/01/18 15:52

質問の意図がいまいち読めませんが



><form method="post" action="<?php echo hoge.php ; ?>">

<form method="post" action="hoge.php">
で十分では?そもそも「echo hoge.php」という書き方をする意味がわからない

>header("Location: hoge.php?msg={$msg}");

headerで自分自身を読むとループしませんか?
かりに特定の条件時のみ適用するのでループしないとして
$msgは$_GETなどで参照していませんが、どこから持ってきているのでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます
<form method="post" action="hoge.php">で十分でした。すいません

ループになっちゃってました。すいませんorz
例えばこんな感じでgetを自分自身に送ってもセキュリティ的に大丈夫でしょうか?
<a href="hoge_list.php?mode=desc">投稿の新しい順</a>

お礼日時:2014/01/18 00:07

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