• ベストアンサー

クロスサイトスクリプティングについて

c_crimerの回答

  • ベストアンサー
  • c_crimer
  • ベストアンサー率34% (12/35)
回答No.2

まぁ、心配しょうな方なのでしょう。 でも、基本的に外部から来たデータや、すでにあるデータでも汚染されていると考える事は大切です。 と、言うのも、何かエラーがや思った通り動かない場合、できるだけ不審な点や不可解な点は少ない方がいいからです。 ようは基本です。 基本がしっかりできてないと、発展したときにミスを犯すからです。 先輩は、そのシステムをもっと、別の用途に使おうとしているのかもしれませんし。 入力はどうんなかんじ? 入力の時には、htmlspecialchars()をかけてるのなら、出力の時はいらないかなー?とも、思うけど。 入力が手打ちだったり、何かのエクスポートだった場合には、少し不安ですねー。 まぁ、レイアウトが崩れるくらいかもしれませんが、かっこわるいので。

関連するQ&A

  • SQLインジェクション及びクロスサイトスクリプティング対策について

    MYSQLとPHPの掲示板があったのでどちらで質問させて頂こうか悩んだのですが、こちらの方に書き込みさせて頂きます。 現在、PHPとMYSQLを用いたプログラミングの勉強をしています。 そこで一つ疑問に感じた事がありましたので、お尋ねしたく投稿させて頂きます。 PEARなどを使わずに、平でSQL文を発行して表示しているのですが… SQLインジェクション対策・クロスサイトスクリプティング対策として以下の4つに気を付けています。 1. 文字コードはUTF8を使用 2. マジッククォートは基本的にオフ。オンの場合はスクリプト中でstripslashesを実行 3. 2のマジッククォート対策のあとにデータのインサート時に全ての挿入文字列にmysql_real_escape_stringを実行 4. データの出力時にhtmlspecialcharsを実行 以上の対策でSQLインジェクション対策及びクロスサイトスクリプティングについては十分でしょうか? コードも出さずに漠然とした質問なので返答しづらいかもしれませんが、幅広くご意見を頂けましたら助かります。 よろしくお願いします。 ※幅広くご意見頂きたいと思っておりますので記事の終了やお礼が遅くなってしまったらすみませんm(_ _)m

    • ベストアンサー
    • PHP
  • PHPで「®」や特殊文字のエスケープ

    PHPでフォームから送られてきたデータを、MySQLに登録する際に、 「®」や特殊文字をエスケープして登録したいのですが、 どのようにしたらいいのでしょうか。 「<」や「&」などはhtmlspecialcharsでエスケープできているのですが、 「®」や特殊文字(~やm2など)がエスケープできず、 文字化けを起こして困っています。

    • ベストアンサー
    • PHP
  • HTMLタグを機能させて出力する際のエスケープ処理

    「HTMLタグを機能させて出力する」際のエスケープ処理は、どうすれば良いでしょうか? <例> ビューファイルの<head>タグ内に、下記のような文字列を渡して、実際に、タグとして機能させたい場合 <link rel="stylesheet" href="hoge.css"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> この場合、やり方としては、通常の文字列を渡すときのように、htmlspecialcharsで一旦「HTML エンティティに変換」した後、何らかの方法(htmlspecialchars_decode?)で元に戻すのでしょうか? それとも、「HTML エンティティに変換」した後、再変換してタグとして使うことが明白な場合は、わざわざ「HTML エンティティに変換」する必要はないのでしょうか? つまり、「HTMLタグを機能させて出力する」際のエスケープ処理は必要ない。やることと言えば、せいぜい、セッターで一旦、privateプロパティへ格納後、ゲッターで取り出すぐらい、なのでしょうか?

    • ベストアンサー
    • PHP
  • エスケープしたくない、けど、したいのもある

    とあるテキストデータ(.txt)を読み込み、それを表示するスクリプトをPHPで作りました。 その際、もしテキストデータにHTMLタグが入っている場合、そのまま出力させて、タグが有効になるようにしています。 (というかテキストを何も処理せずそのまま出力するだけ) (セキュリティ的には、テキストデータは信頼できる自サイトの同一ディレクトリに置いてあるものからしか読み込ませないようになっています) しかし、今度は逆に、もしそのテキストデータに「<hoge>」などの文字がふくまれていた場合、ブラウザはそれをタグと認識し、見えない表示になります。 本当は見えるようにそこは「&lt;hoge&gt;」と出力してほしいわけです。 かと言って、 echo htmlspecialchars($txt, ENT_QUOTES|ENT_HTML5, "UTF-8"); などエスケープして出力すると、今度はHTMLタグとして出力させたい「<br>」なども「&lt;br&gt;」として出力されてしまい都合が悪いです.. ようは、 「こんにちは<hoge><br>ほげ」 という文字列のテキストを、 「こんにちは&lt;hoge&gt;<br>ほげ」 と出力してほしい.. もちろんテキストは「hoge」であるとは限りません。 何かよい解決方法はないでしょうか? ご教示頂けましたら幸いです。

    • ベストアンサー
    • PHP
  • mysqlにデータ登録

    phpでフォームに入力された値をDBに登録するとします。 例えば会員登録とした場合、基本的にhtmlは不要です。確認用にブラウザに表示する際には htmlspecialcharsを用いて(strip_tagsもでしょうか)エスケープすると思うのですがエスケープした データをDBにいれるのはまずいですか? 表示用とは別に生のデータを取得してそっちをDBに入れるという話を聞いたのですがどっちがいいのでしょうか? ブログなどhtmlの要素の登録する必要があるデータであればエスケープしたのは表示する際に手間が 掛かりそうなのでその場合はわかるのですがどのようにするべきなのでしょうか? DBに登録の際は、プリペアドステートメントを利用しています。

    • ベストアンサー
    • PHP
  • includeで別サイトを読み込む

    このような事は可能でしょうか? 別ドメインで動いているcgiやhtmlデータをincludeで読み込んで、読み込んだファイルの不要なタグ<BODY></BODY>や<HTML></HTML>、<META>などのタグを排除して取り込み表示する。 と、言うようなことは可能でしょうか。

    • ベストアンサー
    • PHP
  • こんにちは。PHPとMySQLで自作ブログを作ろうと試みているのですが

    こんにちは。PHPとMySQLで自作ブログを作ろうと試みているのですが、 セキュリティを意識した中で、HTMLタグの取り扱いに困っております。 プログラム全体の流れとしては、 記事投稿ページ→MySQLに保存→ブログ記事として出力 といった感じです。 例えば、記事投稿ページの<textarea>の中で、 <b>テストテスト</b>といった文があったとします。 XSSを防ぐために、htmlspecialchars()でエスケープすると、 MySQLには、&lt;b&gt;テストテスト&lt;/b&gt; と保存されます。 MySQLから記事に出力したときに、太字となった「テストテスト」ではなく、 「<b>テストテスト</b>」とそのまま表示されてしまいます。 記事の出力時に、html_entity_decode()で戻してやればいいかとも思いましたが、 それでは、そもそもXSSを防げない気がします。 一般のブログサービスでは、どうやってデータベースにHTMLを保存しているのでしょうか? 解決するいい方法があればどなたか教えてください。

    • ベストアンサー
    • PHP
  • PHPでフォームからデータを受け取る

    PHPでwebページのフォームからデータを受け取り、データをtxtに書き込みするものを作っているのですが、その際にhtmlタグを受け取ると荒らされる可能性があると聞く事があるのですがどういった場合なのでしょうか。 一応htmlspecialcharsを施してはいるのですが、何のためかがよくわからなくて質問しました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • htmlタグがあるデータのエスケープ処理

    今 phpを勉強していて自分の勉強用にブログを作ろうと思っています。 ですが、その事で分からないことがあり、質問させていただきます。 それは、データベース内にある記事データのエスケープ処理についてです。 記事データを日付順やカテゴリーごとに並べて出力する際にエスケープ処理をすると htmlタグがもちろんそのまま出力されてしまいます。 自分が参考にした本では出力するデータは全てエスケープするべきだと書かれていましたが、 今回のようなケースはどうすればいいのでしょうか? 1, ユーザー入力ではなく、運営者のみが入力するデータの場合、エスケープは必要ないのでしょうか?   その場合セキュリティの問題はないのでしょうか? 2, それとも全ての場合においてエスケープ処理は必要で、htmlタグを含んだデータを   データベースに入れるのが問題なんでしょうか? どなたか回答お願いします。

    • ベストアンサー
    • PHP
  • クロスサイトスクリプティングについて

    情報の勉強超初心者です。 教科書に 「標的となるサイトに対して不正なスクリプトを含んだデータを送信させるよう利用者を誘導し、不正なスクリプトを利用者ノブラウザ上で実行させる攻撃」とあります。 しろうとの質問ですみません。 1.これはよく 会社で会社の情報システム部から 発信者のわからないメールは 開かないように とか 添付ファイルをダウンロードしないようになどの 指示と関連しているでしょうか。 2.言葉じりですが 教科書の「利用者を誘導」というのは 具体的にはどのようなメール内容になるのでしょうか。 3.不正なスクリプトというのはどのようなもので どのような害を およぼすものでしょうか。 4.対応策はどのようなものがあるのでしょうか。 よろしくお願いします。