2012-02-28 47 views
1

私はこのようなページを持っています。ユーザーがフォームにURLを書き込んで送信します。 URLが送信されたら、そのページをCURLに接続して文字列を検索します。文字列が見つかると、URLをデータベースに追加します。そうでない場合は、ユーザーにエラーが発生します。PHP:CURLを使用する場合のセキュリティ?

URLをhtmlspecialchars()でサニタイズすると、A-Z、1〜9の正規表現も許可されます。シンボル。他のウェブサイトから取得したコンテンツもhtmlspecialchars()でサニタイズします。

私の質問は、次のようなURLを入力できますか? www.evilwebsite.com/shell.exeまたはshell.txt

PHPはそれを実行するのか、単にHTML出力を探しますか?それが安全であるかどうか、そうでない場合、私は何をすべきですか?

ありがとうございます。

ps。 allow_url_fopenは無効です。だから私はカールを使用しています。

答えて

5

htmlspecialcharsまたはRegexがここで必要な理由がわかりませんが、それらは必要ありません。また、PHPがcURLを使用して取得したコンテンツを「自動的に」解析する方法はありません。そう、はい、それは保存されます(あなたが出力のようなものをevalのようにしない限り)。

ただし、取得したコンテンツを後で処理する場合は、入力がユーザー提供であり、それに応じて処理する必要があることに注意してください。

+0

実際には、取得したコンテンツで行うのは、基本的な正規表現スキャンだけです。たとえば、取得されたコンテンツに「Hello」テキストが含まれている場合は、URLをデータベースに挿入します。そうでない場合は、「こんにちはテキストがこのページに見つかりません」のようなエラーが表示されます。 「こんにちは」テキストをスキャンしている間に取るべきステップはありますか? – Aristona

+0

@Anılünal:いいえ、それは完全に安全です。しかし、不要なサニタイズを削除して、特定のURLを壊してサービス拒否を引き起こす可能性があります。 –

+0

htmlspecialchars()は評価の目からあなたを救いません:-)私は彼のポイントはXSSを防ぐことだと思います。 –

1

curlがリクエストしてサーバーに送信し、サーバーがデータを返信します。 Webサーバー上に実行可能ファイルがある場合は、そのファイルのバイナリを取得します。ファイルをディスクに書き込んで実行しない限り、問題はありません。その意味でのセキュリティは問題ではありません。

+0

サーバが使用しているcURLのバージョンに脆弱性が見つからないか、またはPHPスクリプトが解析している時点で、提供されているURLをホストしている場合は、データを完全に制御できます。 –

+0

データはセキュリティ上の欠陥を引き起こす可能性がありますが、cURLは使用しないでください。私が考えることができる唯一の脆弱性はバッファオーバーフローですが、PHPはこれを処理し保護します。どのような種類の脆弱性について考えていますか? –

+0

@Patrick:PHPはそれを処理し保護しますか?それが私にとってのニュースです。また、特にPHPのようなソフトウェアには、他の多くの種類の脆弱性が存在します。しかし、それはあなたのWebサーバーをサンドボックス化することができないほどのリスクに対してはあまり対処できないので、実際には問題とは関係ありません。 –

関連する問題