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="次へ">
初歩的な質問ですいませんが、詳しい方がいらっしゃいましたら
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
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 …
ご回答ありがとうございます。
確かにおっしゃられた通り、スクリプトが実行可能でした。
とても助かりました。
セキュリティのページもいろいろと参考になりました。
No.2
- 回答日時:
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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
特定のページからのみのアクセス
-
Sessionの上限について
-
PHPでの複数ページに渡るメール...
-
セッション変数の命名規則
-
PHPのセッション有効期限について
-
PHPでログイン人数を制限したい
-
セッション ID とセッション名...
-
PHP4からPHP5へ移行した際、セ...
-
セッションハイジャックの対処...
-
セッションが切れてしまいます
-
301リダイレクトはセッション引...
-
セッション管理を携帯用とPC用
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
バッチファイルでpingの結果を...
-
php 入力画面から確認表示画面...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
PHPのセッションについて
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
$_SESSIONと、POSTやGETの違い
-
ログインしたら他からログイン...
-
複数のサーバで運営する場合の...
-
301リダイレクトはセッション引...
-
「戻る」ボタンで値の保持
-
セッションのスコープ(有効範...
-
セッション ID とセッション名...
-
ログイン画面をはさんだ後、自...
-
session_start()で生成されるセ...
-
管理者としてログイン
-
セッション変数にパスワードを...
-
セッションを維持したまま、サ...
-
PHP cookieの値が更新されない...
-
セッションが正しく更新されな...
-
POSTで情報を他のサーバーに渡...
おすすめ情報