4

私はphpに比較的慣れていないので、特にデータがCookieからのものである場合、「エコー」するときにhtmlをサニタイズする必要がある理由を理解するのを手伝ってくれることを望んでいました..

つまり、代わりに

<h3>Hello, <?php echo $_COOKIE['user']; ?>!</h3>

やったほうがいい

<h3>Hello, <?php echo htmlspecialchars($_COOKIE['user']); ?>!</h3>

これは私が理解していることです。

クッキーはクライアント側に保存されるため、それらのデータは悪意のあるユーザーによって操作/変更される可能性があるため、セキュリティ上のリスクがあります (笑 @悪)。

しかし、Cookie はクライアント側に保存されるため、クライアントは自分の Cookie しか変更できないことを意味します。つまり、何らかの悪意のあるコードを $_COOKIE['user'] に追加すると、Cookie が実行されたときに、悪意のあるコードが1 人のユーザー (最初に Cookie を変更したユーザー) にのみ表示され、他のユーザーには表示されません!? だから問題は何ですか?

4

6 に答える 6

7

ユーザーが自分の Cookie を変更したと仮定しています。Cookie はサードパーティによって変更される可能性があります (編集: 追加のソフトウェアを使用する。サードパーティの Web サイトは Cookie を直接変更することはできません)。これにより、悪意のあるコードがユーザーのブラウザーに挿入され、ユーザー エクスペリエンスが変更され、コードに追加のセキュリティ リスクが生じる可能性があります。

于 2012-06-05T14:51:45.700 に答える
3

セキュリティの側面だけでなく、ユーザー エクスペリエンスの側面もあります。この場合、リスクが非常に低いため、提示するコードはセキュリティにはあまり役立ちませんが、ユーザー名に引用符または < > 記号を含めることができる場合、ユーザーはログインが正しく表示されない理由を理解できません。

このようなコードを使用すると、登録プロセス中に許可する文字の種類に関係なく、ユーザー名が正しく表示される (および追加のセキュリティが追加される) ことが保証されます。

于 2012-06-05T14:57:14.077 に答える
2

そのような状況では実際にはリスクではありませんが、これが実際の状況になることはめったにありません。とにかくやるべきです。

  • 一貫性- 今すぐ入れないでください。別のものに変更すると、セキュリティ ホールが開く可能性があります。
  • ユーザー エクスペリエンス- Cookie に HTML が含まれているからといって、それが XSS インジェクションの試みであるとは限りません。誰かの名前が だっ&amp;たら?への改名を考えていました&amp;
于 2012-06-05T14:52:56.897 に答える
-1

多くのデータがユーザーの Cookie に保存されている実際の Web サイトを作成していると想像してください。

Cookie のデータの一部は、Web サイトで SQL ステートメントを作成するために使用される可能性があり、ユーザーまたは別の Web サイトが Cookie を不適切な方法で変更すると、エラーが発生する可能性があります。

Cookie データのインジェクションをチェックしない場合、たとえvarchar16 進数のみを挿入する必要がある列の文字列など、データの一貫性を損なう可能性のある何かが Cookie に書き込まれる可能性があります。

この問題に対処する最善の方法は、可能な場合はセッションを使用し、必要最小限のデータのみを Cookie に保存することです。

于 2012-06-05T14:58:37.710 に答える
-1

ユーザーは、Cookie を変更してページにスクリプトを挿入することができます。その事実だけで、あなたは立ち止まって考えさせられます。

于 2012-06-05T14:52:19.647 に答える
-2

しかし、Cookie はクライアント側に保存されるため、クライアントは自分の Cookie しか変更できないことを意味します。つまり、何らかの悪意のあるコードを $_COOKIE['user'] に追加すると、Cookie が実行されたときに、悪意のあるコードが1 人のユーザー (最初に Cookie を変更したユーザー) にのみ表示され、他のユーザーには表示されません!? だから問題は何ですか?

まあ、それは実装とCookieのデータを何に使用するかによって異なります。悪意のあるユーザーは、Cookie を介して SQL を挿入したり、権限を変更したり、別のユーザーになりすますことができます。

だからこそ、常に最悪のシナリオを考えてコーディングする必要があります

于 2012-06-05T14:52:43.157 に答える