2010-12-29 3 views
1

私のPHPコードでは通常の使用のためです。私はそれを私の質問や何かに渡すつもりはない。PHP:_GETデータを使用するために必要なサニタイズはありますか?

+1

「通常使用」を定義しますか?いくつかの例を見せてもらえますか? –

+0

サニタイズにより、処理ロジック内の予期しないエッジケースを緩和することができます。しかし、適切な場所で脱出するだけで安全がもたらされます。また、すべての変数には特定の[フィルタリング](http://sourceforge.net/p/php7framework/wiki/input/)が必要ですが、すべてを消毒することはできません。 – mario

+0

私は危険に最も近いのは、ファイルがディレクトリリスト内の指定された名前で存在するかどうかをチェックすることです – Hamster

答えて

7
  • あなたはSQLクエリに渡す場合は、ファイル名を形成するためにそれらを使用する場合は、AS-であるにあなたの出力それら場合は、脆弱性
  • を読んで任意のファイルを取得するSQLインジェクション
  • を取得ユーザーあなただけのセットで値を比較している場合、それはいくつかの
  • をフォーマット所定た場合、ファイルにそれらを使用すると、出力した場合、HTMLページの一部として、あなたは
  • XSSの脆弱性を取得し、あなたが不正な形式のファイルを得ることができますあらかじめ定義された値のうち、あなたは大丈夫です。
  • あなたは数に変換している場合、あなたは限り、あなた
0

$_GETパラメータに何か(または何も)絶対に得ることができることに留意して、アプリケーションとそのセキュリティに必要なものが必要です。たとえば、クエリで値を使用していない可能性がありますが、たとえば、ページ内の値を盲目的に使用すると、クロスサイトスクリプティング攻撃を受ける可能性があります。 「無害な」Webサイトは、クロスサイトスクリプティング攻撃に簡単に陥る可能性があります。

ユーザーの入力を信頼しないでください。はいですか?

0

あなたはそれらの内容及びそれらの用途に応じて変数をサニタイズする必要があるため、任意の数の作品としていいですよ。そう

あなたがそうのような変数がある場合:データベース内で使用して

  • $_GET['page_id']

そして、あなたの、そしてあなたのサニタイズそれを。

あなたがそうのような変数がある場合:

  • require_once "pages/" . $_GET['action'] . ".php"

のように使用上の

  • $_GET['action']

そして、あなたの計画をあなたが行う前に、あなたがサニタイズそれ、otちょうどregister_globalsがオフであることを確かめ、あなたはかなり考えなくてもそれらを使っていないように大丈夫になります

2

これは本当にあなたのコードを踏んで、それが何をしているかを正確に見ることによってのみ答えられます。あなたのコードに衛生を必要とする可能性のある落とし穴があります(間違って組み込まれたswitchのような)。

データベースクエリ以外

、入ってくるデータをサニタイズするあなた必要一般的なシナリオは、次のとおりです。ファイル名

  • でそれを使用して

    • を渡すためにそれを使用してファイル
    • を含めるためにそれを使用しましたexec()
    • これをHTMLに出力する
  • 0

    あなたのサーバーから来ていないものはすべて消毒する必要があります!これには$_GET, $_POST, $_SERVERが含まれます。

    関連する問題