phpでユーザー任意入力のコードを書き出す場合、

(クライアント側ではなく)サーバー側にどんなセキュリティー上の問題がありますか?

<?php
$userhtml = $_POST["userhtml"];
print $userhtml;
?>

スクリプトやActiveXでサーバーに何かコマンドを実行したり、
ファイルにアクセスしたり、phpプログラムの内容を取得したり
することはできるのでしょうか?

教えてください。よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/05/21 20:58:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kazu1107 No.1

回答回数199ベストアンサー獲得回数14

ポイント30pt

Ajaxの仕組みを利用すればログファイルの出力ぐらいなら出来るかも・・・ただサイトのディレクトリ構造やファイル名をあらかじめわかっていて、アクセス権の設定などが甘かったらという条件付きですが。

id:k2017

ありがとうございます。

2006/05/21 20:55:48
id:sera_yr No.2

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

ポイント40pt

無限にサーバーへのリクエストを繰り返すJavascriptを書かれるってことくらいでしょうか。

これは特にユーザが入力したHTMLを吐く場合でなくてもされる危険性はあるのですが、この場合はRefererが自分のサイトのドメインとなるので多少アクセス制限をかけにくいのかなぁと。

また、同一のドメイン内に、重要な値をhiddenで持たせていて、入力チェックのときに、”Refererが自ドメインのものか”という判定をしている場合にも改竄された値を素通りさせる危険性があります。

まぁRefererの値は任意に生成されうるものなので、もともとそれほど信頼して良いものではないですが。。

少し質問の意図とはずれていたかもしれませんが、少なくともサーバーのコマンドを実行したり、phpプログラムの内容を取得したりといったことはできないと思います。

id:k2017

簡単にはできないということですね。参考になりました。ありがとうございます。

2006/05/21 20:57:15
id:wizemperor No.3

回答回数379ベストアンサー獲得回数52

ポイント10pt

このスクリプトだけではサーバー上のデータに対してのセキュリティ的な問題はないように思います。

ただし、例えばデータをサーバーに保存する為のフォーム等が同ぺージあるいは別ページにある場合、このページを利用してJavaScriptでデータを書き込まれたり、外部のサイトへの攻撃に悪用される可能性はあると思います。

または、このページを利用してサーバーへのリクエストをくり返される可能性があり、他の部分の処理が甘いと偶発的にデータが壊れてしまう場合はあるかと思います。

どちらにしても、そういった可能性を潰すといった意味ではきっちりサニタイジングをしておいた方がよいかと思います。

http://www.doyouphp.jp/tips/tips_xss.shtml

id:k2017

ありがとうございます。

2006/05/21 20:57:46

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

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

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

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

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