人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mysql phpのセキュリティーで質問です。

mysqlからselectして$postに格納
web page上に、
<?php echo htmlspecialchars($post['text'], ENT_QUOTES, 'UTF-8');?>
で出力する。

これはどの書籍でも載っていることで理解できます。

【ここから質問】
ふとxssの攻撃に関していろいろ見ていて思ったのですが、
ユーザーの入力などがない、今回のケースのような場合、
mysqlからselectして$postに格納
web page上に、
<?php echo $post['text']; ?>
と記載した場合に危険性はあるのでしょうか?

【なぜこのように書いたか背景】
textの内容を改行したいのですが、
<?php echo nl2br(htmlspecialchars($post['text'])); ?>
など記述してもダメで・・・・
だったらということでやってみました。

素人の私ですが、
アドバイスいただけると幸いです。


●質問者: ak
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● たいがあ
●34ポイント ベストアンサー

$postの値がどこから来たかは関係なく、HTMLコードをhtmlspecialcharsして出力するならば、それは安全です。

提示されたコードで改行できないとの事ですが、そのコードに問題はありません。
改行コード部分で改行されます。

$post['text']の内容を提示して頂ければ、改行されない理由がわかるかと思います。


akさんのコメント
ありがとうございます! 調べてみます!

2 ● easygoings
●33ポイント

echo $post['text']; では、外部のページに細工して、
postで絶好調さんの作ったページに遷移した場合に
javascriptでもiframeでも、やりたい放題になってしまいますから、
セキュリティ上、危険です。

echo nl2br(htmlspecialchars($post['text']));
で動くはずですので、
$post['text']に、きちんと改行コードが入っているかどうか、
出力されたソースコードに
または
が入っているかどうか、
確認されてはいかがでしょうか。


easygoingsさんのコメント
または・・・の後に、うっかりbrタグそのまま書いちゃったので、 見えませんね。(笑) ソースコードに<br>または<br />タグが入っているかどうか 確認して下さい。 です。

akさんのコメント
ありがとうございます!

3 ● 井戸端さん
●33ポイント

危険性はあるのでしょうか?

落とし穴は思わぬところにあるものよ。だから危険性は無いなんて断言は誰にもできないわ。できることはやっておくことね。

内容を改行したい

WordPressのフィルタかしらね?
いくつか対策はあるみたいだけど該当するものあるかしら?
https://www.google.co.jp/search?q=wordpress+%E6%94%B9%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84


akさんのコメント
危険は常にあるということですね ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ