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'])); ?>
など記述してもダメで・・・・
だったらということでやってみました。

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

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2014/03/13 10:02:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tigerjp No.1

回答回数19ベストアンサー獲得回数6

ポイント34pt

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

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

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

id:akakak

ありがとうございます!
調べてみます!

2014/03/13 10:02:17

その他の回答2件)

id:tigerjp No.1

回答回数19ベストアンサー獲得回数6ここでベストアンサー

ポイント34pt

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

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

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

id:akakak

ありがとうございます!
調べてみます!

2014/03/13 10:02:17
id:easygoings No.2

回答回数153ベストアンサー獲得回数20

ポイント33pt

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

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

id:easygoings

または・・・の後に、うっかりbrタグそのまま書いちゃったので、
見えませんね。(笑)

ソースコードに<br>または<br />タグが入っているかどうか
確認して下さい。

です。

2014/03/07 14:59:06
id:akakak

ありがとうございます!

2014/03/13 10:02:25
id:watercooler No.3

回答回数289ベストアンサー獲得回数51

ポイント33pt

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

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

内容を改行したい

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

id:akakak

危険は常にあるということですね
ありがとうございます!

2014/03/13 10:02:47

コメントはまだありません

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

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

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

回答リクエストを送信したユーザーはいません