1

$ _POSTでいくつかの変数を取得しています。これは、主にユーザーがフォームに入力したものです。フォームに巨大な値が挿入されるのを防ぐために、これらの変数をチェックして、長すぎる場合はユーザーにエラーを返すことができます。

ただし、ユーザーが本当に長い値を入力した場合、その変数の処理を拒否する前にスクリプト全体がクラッシュするため、これを行うことはできません。これは私のサーバーのセキュリティに対する脅威ですか?

デフォルトのメモリ制限を増やすことなくこれを修正するにはどうすればよいですか?出来ますか?

javascriptを使用してユーザー入力を制限することもできますが、ユーザーはjavascriptを無効にすることでその制限を簡単に克服できます。

4

3 に答える 3

1

iniディレクティブを使用して、投稿本文の最大サイズを制限できますpost_max_size。ただし、デフォルトは8Mです。memory_limitデフォルトは128Mなので、変更されていない場合は問題ありません。(php 5.3)

しかしもちろん、これはデータをどう処理しようとしているのか、そしてこれのためにPHPがどれだけのメモリを消費するのかによって異なります。極端に言えば、1バイトの入力でメモリ制限に達するサンプルスクリプトを作成することさえ可能です。したがって、アプリケーションに適切な値を見つける必要があります。

ドキュメントから

許可される投稿データの最大サイズを設定します。この設定は、ファイルのアップロードにも影響します。大きなファイルをアップロードするには、この値はupload_max_filesizeよりも大きくする必要があります。configureスクリプトでメモリ制限が有効になっている場合、memory_limitはファイルのアップロードにも影響します。一般的に、memory_limitはpost_max_sizeよりも大きくする必要があります。整数を使用する場合、値はバイト単位で測定されます。このFAQで説明されているように、省略表記も使用できます。投稿データのサイズがpost_max_sizeより大きい場合、$_POSTおよび$_FILESスーパーグローバルは空です。これは、さまざまな方法で追跡できます。たとえば、データを処理するスクリプトに$ _GET変数を渡し、$ _GET['processed']が設定されているかどうかを確認します。

于 2013-03-07T01:39:39.397 に答える
1

php.iniにアクセスできますか?upload_max_filesize/post_max_sizeを設定できます

詳細については、こちらをご覧ください:http: //php.net/manual/en/ini.core.php#ini.sect.file-uploads

(HTMLフォームでmaxlengthを設定するpsは、悪意のあるユーザーによって簡単に回避されます)

于 2013-03-07T01:39:46.977 に答える
0

クライアント上のデータをパーツに分割し、Ajaxを介してパーツにダウンロードしてから、ダウンロードしたパーツをディスクまたはデータベースに保存します。多分このように?

于 2013-03-07T01:41:52.927 に答える