-1

PHP マニュアルとユーザーからのフィードバックはすべて、私を混乱させます。私は、他の誰かのコードを修正しようとしています。彼は、すべてのフォーム データを ASCII コードに変換して元に戻しました。

これはすべてをエスケープする大まかな方法​​として行われましたが、保守が難しく、データベースはクエリ可能なデータベースではなく、コンマで区切られた数字の集まりのように見えます。確かに、フォームの値を格納し、多くのゆがみなしでそれを取得するための確実な方法が php にあります。さまざまなescape機能unescapeがすべてをエスケープしているようには見えません。

これも確認して設定する必要がありますが、他のものが設定されていないことを確認してください。何を与える?簡単に言うと、フォーム フィールドにあるものはすべて確実に MySQL 列に書き込まれ、簡単に PHP に戻して mysql でクエリできる必要があります。フォームはイントラネット上にあり、データにはドル記号、パーセント記号、スラッシュ、アポストロフィなど、通常のキーボード入力がすべて含まれている可能性があります。

4

1 に答える 1

2
  1. 古いバージョンの PHP を使用している場合: PHP をアップグレードするか、より新しい PHP を備えたより優れたホスティングに移行します。それができない場合: PHP 設定でマジック クォートを無効にします。それにも失敗した場合:マジック クォートを検出して元に戻します。マジック クォートはひどいアイデアであり、PHP から削除されました。
  2. データベースにデータを挿入するときは、準備済みステートメントとパラメーター化されたクエリを使用します
  3. データを HTML に挿入するときは、特殊文字をエスケープします (属性値を囲む引用符の種類に対して引用符オプションが正しく設定されていることを確認してください。デフォルトは安全であり、代わりにvalue="<?php echo ... ?>"使用する場合は安全ではありません')。より複雑なシナリオについては、OWASP XSS (クロス サイト スクリプティング) 防止チート シートを参照してください。
于 2012-10-21T23:04:36.067 に答える