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

phpでSmartyを使用して携帯サイトを作成してます。

画面間のセッションの引渡しで
サーバサイドでSID(セッションID)を
変数$session_idに格納し、クライアントサイドで
下記のようにformタグのactionを指定してsubmitした場合、$session_idにスクリプトを埋め込まれて実行されてしまう可能性は
あるのでしょうか。
$session_idにhtmlspecialchars()をかけるべきなのでしょうか。

<form name="form" method="post" action="index.php?{$session_id}">
・・・
<input type="submit" value="次へ">

初歩的な質問ですいませんが、詳しい方がいらっしゃいましたら
よろしくお願いいたします。

A 回答 (2件)

htmlspecialchars()を使いましょう。



ブラウザでhttp://xxx.xxx.xxx/xxx.php?PHPSESSID="><script>alert()</script>にアクセスされると
<form name="form" method="post" action="index.php?"><script>alert()</script>
というふうに簡単にスクリプトを埋め込まれます。

参考URLの
2.クロスサイトスプリクティング
 e.クロスサイトスクリプティング対策に strip_tags() を使用するときの注意
7.HP でセッション変数、Cookie を使用する際のセキュリティ対策について
 g. セッション関連の処理で注意すべきクロスサイトスクリプティング問題
をご覧下さい。

参考URL:http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_se …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
確かにおっしゃられた通り、スクリプトが実行可能でした。
とても助かりました。
セキュリティのページもいろいろと参考になりました。

お礼日時:2006/12/06 12:20

ANo1さんご指摘のように、PHPではセッションID文字列をクライアントが決定できる問題があります(permissiveなセッション管理と呼ばれています。

詳しくは、参考URLを見てください)。従って、セッションIDに、"<>&などを含む任意の文字が含まれる可能性があります。

今回の例、
<form name="form" method="post" action="index.php?{$session_id}">
では、セッションIDがクエリストリングになっているため、構文的にはhtmlspecialcharsではなく、urlencode(に加えてhtmlspecialchars)をすべき場面です。

参考URL:http://blog.ohgaki.net/index.php/yohgaki/2005/12 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
セキュリティ対策は奥が深いですね。
学ばなければいけないことが多いです。

お礼日時:2006/12/06 12:25

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