1

次の単純なコードを考えます。

 function loadthis ($var)
 {
      $id = $this->model->get_id($var);
 } 

質問:悪意のあるコードが URI 変数を介して渡されることはありますか?

シナリオ: www.mydomain.com/mycontroller/loadthis/dosomethingreallybadhere

追加情報:

  • モデルでアクティブ レコードを使用しているため、SQL インジェクションを実行できないことがわかっています。
  • この例では、form_validation クラスを使用していません (ただし、フォームの他の場所で使用しています)。
  • URI 文字を Codeigniter によって提供されるデフォルトの文字に制限します

    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
    
4

3 に答える 3

1

許可された文字でできることはあまりありません...主に防止しようとしているのは、誰かが MySQL や悪意のあるスクリプトをサイトに挿入することです。可能性は常にありますが、あなたが持っているものでかなり安全だと思います. フィルタリングする主なものは次のとおりです。

  1. 引用符、一重引用符、およびセミコロンは、MySQL インジェクション攻撃に使用される可能性があるためです。
  2. < や > などの HTML マークアップ文字は、悪意のあるスクリプトの挿入に使用される可能性があるためです。

これは決してすべてのリストではありません。これらは、目を光らせておくべき主な事柄です。https://www.owasp.org/index.php/Main_Pageでセキュリティのベスト プラクティスを読むことを強くお勧めします。

于 2012-04-20T07:01:36.740 に答える
0

はいといいえ。

「データ」自体は決して危険ではなく、単なるデータです。データに予期しないものが含まれている場合、望ましくない結果をもたらす可能性があるのは、それをどのように処理するかによって異なります。したがって、URLを介して受信したデータ、または実際にはユーザーが制御できる場所から受信したデータの場合、そのデータに何が含まれているかを知ることも保証することもできません。したがって、このデータを使用するコードを記述しないでください。データに予期しないものが含まれている場合、セキュリティの脆弱性が破られたり、開かれたりします。

内容が不明なデータは、エイリアンオブジェクトとして扱い、それに応じて処理すれば危険ではありません。何が入っているのかわからなくても、知っているかのように扱うと危険ですはい、それは複雑な答えです。;)

于 2012-04-20T07:05:51.283 に答える
0

もちろん、それはコードに依存します。すべてのコードベースを分析せずに「完全に安全」と言うことはできません。制限されたURL文字セットは妥当なようです(アプリケーションにとって十分な場合)。\..\..\ただし、ユーザーがURLを入力すると、場合によってはカスタムファイルを開く可能性がある場合(Windowsの場合)、入力が悪意のあるものになる可能性がある例が少なくとも1つ想像できます。

SQLインジェクションのみに関心がある場合、次のようなコードがある場合:

SELECT * FROM articles WHERE article_id = $id

悪意のあるユーザーは0 or 1 like 1、制限された文字セットを渡す$idを設定できます。

どこかで適切にエスケープするのを忘れた場合(生成されたJavaScriptコードでよく発生します)、XSSでも同じことができますが、例を考えるのは困難です。

とにかく、セキュリティを得るためにユーザー入力を制限する真の/完璧な/安全な方法はありません。XSS / SQL /その他のインジェクションを回避する唯一の方法は、すべてのコードを調べて、入力または出力に変数を使用する場合は常に、使用するコンテキストに従って適切にエスケープされるようにすることです。ルールは入力を制限しないことですが、何でも含めることができるように準備してください。

入力が文字列の場合、任意の文字を含めて処理できるように準備してください。そのままデータベースに保存し保存中に害がないことを確認してください。SQLクエリを作成するときにエスケープする必要がある場合は、そこでエスケープします。文字列(またはその一部)をHTML出力に入れる必要がある場合は、適切にエスケープしてください。もちろん、すべての場所で適切な脱出を行うように非常に注意する必要があります。

于 2012-04-20T07:06:04.717 に答える