現在、ユーザーがデータファイルをアップロードして自動処理できるウェブサイトに取り組んでいます。セキュリティとユーザーガイダンスの両方の目的で、.txtや.csvなどの一般的なデータサフィックスのみを受け入れるように、クライアント側とサーバー側の両方に拡張ホワイトリストを実装しました。
送信された一部のデータファイルには、ファイル拡張子がまったく付いていないことがわかりました。
これらのファイルは、アップロード後にプロセスによって実行されません。テキストパターンが解析されます。したがって、検証されていないファイルをサーバー上に置いても、理論的には大きなセキュリティリスクはありません。ただし、処理されるデータはデータ保護法の対象となる個人データであるため、侵害は破滅的です。
このインスタンスは、ユーザーが拡張子なしでファイルをアップロードできるようにしても安全ですか?そして、より広い質問として、サイトがこれらのファイルを許可することを許可することはこれまでに良い習慣ですか?
拡張自体は重要ではありません。代わりに、コンテンツについて知るためにMIMEタイプを把握することをお勧めします。
ファイルのアップロードに関するセキュリティリスクに関しては、 https://www.owasp.org/index.php/Unrestricted_File_Upload も参照してください。
サーバー側のチェックを行って、取得しているコンテンツが期待どおりであることを確認する必要があります。ファイルの内容を確認して、特定のビジネス要件に制限されていることを確認する必要があります。たとえば、誕生日のCSVをアップロードする場合は、ファイルに<script>
タグを含めないでください。
DropBoxやそのようなサービスでない限り、サーバーにランダムなものを保存することは一般的に望ましくありません。その場合は、独自のサブドメインのサーバーにファイルを保存し、リモートでの実行とダウンロード、A/Vスキャンなどを制限するなど、特別な予防策を講じる必要があります。
これらのファイルは、アップロード後にプロセスによって実行されません。テキストパターンが解析されます。したがって、検証されていないファイルをサーバー上に置いても、理論的には大きなセキュリティリスクはありません。ただし、処理されるデータはデータ保護法の対象となる個人データであるため、侵害は破滅的です。
サーバーへの任意のファイルのアップロードを許可する場合、いくつかのリスクがあります。
Apache
を使用してPHPファイルをアップロードしますが、 DefaultType application/x-httpd-php
またはForceType application/x-httpd-php
inあなたの設定。wget
、curl
などによってダウンロードされる別のスクリプトからポイントされ、実行される可能性があります。拡張子を追加しても、潜在的なファイルパーサーの脆弱性の問題は修正されません。ユーザーは、問題のないファイルの名前をcsv/txtに変更すると、ほとんど問題はありません。
すべての潜在的なリスクを書き留め、それらをクローズアップする必要があります。