PHPのセキュリティに関する質問です。


現在、php5.2とMySQLを使ってwebサイトを作っています。
DBには、title,bodyなどのカラムがあり、
bodyの中身は、htmlで記述されたデータが入っています。(例:<p>あいうえお</p>)

こららのデータは、自分で直接insertしたもので、外部からinsert等できる機能はありません。

一般的に、出力時には、
htmlspecialchars
を使用すると言われていますが、
このような場合には、エスケープしなくても良いのでしょうか?
※htmlspecialcharsを使うと、htmlが無効化されてしまいます。

もしくは、他のセキュリティ対策があるのでしょうか?
どうか、ご教授お願い致します。

※ちなみに実際にはcakephp1.2 rc2を使用しておりますが、
回答は一般的なphpのセオリーで構いません。

回答の条件
  • 1人2回まで
  • 登録:2008/12/15 12:08:02
  • 終了:2008/12/16 09:57:02

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/12/15 12:50:45

ポイント40pt

このような場合には、エスケープしなくても良いのでしょうか?

ユーザーからの入力が管理画面等を含めて一切無いならエスケープの必要はない。

というか、データの取得元が違うだけでHTMLやPHPにべた書きしているのと同じ状態だからね。


もちろんインサート時に問題のあるコードを挿入することは可能だが、

それは Web アプリのセキュリティ対策とは別のお話。

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/12/15 12:50:45ここでベストアンサー

ポイント40pt

このような場合には、エスケープしなくても良いのでしょうか?

ユーザーからの入力が管理画面等を含めて一切無いならエスケープの必要はない。

というか、データの取得元が違うだけでHTMLやPHPにべた書きしているのと同じ状態だからね。


もちろんインサート時に問題のあるコードを挿入することは可能だが、

それは Web アプリのセキュリティ対策とは別のお話。

id:mosa10 No.2

もさてん回答回数1ベストアンサー獲得回数02008/12/16 01:11:14

ポイント30pt

「htmlspecialchars」に限って言えば、

外部から入力された悪意のあるコードに対して無効化するのが主です。

質問文からすると、外部からの入力は無いようですので、

特に対策は行わなくていいと思います。

ただし、セキュリティ対策と言っても様々なものがあります。

例えば、DBを使用していて、ユーザーの入力値を格納するのであれば、

「SQLインジェクション」というものに気をつけなければいけません。

様々なセキュリティ対策について、

IPAのホームページに分かりやすく説明されています。

http://www.ipa.go.jp/security/awareness/vendor/programming/intro...

  • id:jojo_oraora
    個別にお礼を書く前に終了してしまいましたので、
    こちらに書かせて頂きます。

    b-windさん
    素早い回答ありがとうございました。
    また、履歴を見るととても信頼できる方のようで安心します。

    mosa10さん
    貴重な補足ありがとうございました。
    おふたりの意見が同じでしたので、
    質問を閉じることができました。

    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません