問題タブ [sql-injection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
699 参照

session - セッションは改ざんできますか?

SQL インジェクションを防ぐために、すべての ASP コードをチェックする必要があります。

セッションオブジェクトもチェックする必要がありますか?

セッションはどのように乗っ取られる可能性がありますか?

ありがとうございました!!

0 投票する
5 に答える
1556 参照

asp.net - SQL インジェクション用の HTTP または SQL Server ベースのソリューション

私は SQL Server 2005 と Windows Server 2000 を使用していますが、コードを補強している間に SQL インジェクション攻撃をブロックする「自動化された」方法があるかどうか疑問に思っています。

次の方法があると示唆する人もいます。

  1. ある種の ISAPI または HTTP モジュールを挿入して、リクエスト ポストとクエリ文字列をインジェクション指向のシンボルにフィルターし、アプリケーションに到達する前にリクエストを失敗させます。これらのソリューションのほとんどは、IIS 6 以降に固有のものです。5を実行しています。
  2. 各コマンド オブジェクトが一度に 1 つの SQL コマンドのみを実行することを保証します。

私の構成に関する他のアイデアはありますか?

0 投票する
4 に答える
1377 参照

sql-injection - SQL インジェクション攻撃 - 何が起こっているのか?

重複の可能性:
SQL インジェクション攻撃の試み - 彼らは何をしようとしているのか?

ここ数か月、自分のサイトでこの SQL インジェクションの試みを何度も見てきました。

コードを確認した後、データベース自体ではなくメモリ内のデータセットに対してクエリを実行しているため、保護されていると確信しています。ただし、私は保護されていると確信していますが、この攻撃の試みで何が起こっているのかを完全には理解していないため、今後脆弱になる可能性のあるコードを書くことを避けるために、それを理解したいと考えています.

これらのハッカーがこのコードで何をしようとしているのか、誰か説明してもらえますか?

ありがとう。

-このコードは、クエリ文字列に追加されるだけでなく、投稿データとして送信されます。

0 投票する
7 に答える
2249 参照

security - クエリに空白のない入力を追加すると、SQL インジェクションに対して脆弱になりますか?

ユーザー入力から文字列を取得し、それを空白で (\w を使用して) 文字列の配列に分割しています。次に、配列をループして、次のように where 句の一部を追加します。

ユーザー入力をクエリに追加しているので、これは危険だと思います。ただし、最初の入力を空白で分割したため、どの検索文字列にも空白がないことはわかっています。

これを SQL インジェクションで攻撃することは可能ですか? Robert');DROP TABLE students;--そこには空白が必要なので、与えても実際には何もドロップしません。その例では、適切に動作しませんが、損傷はありません。

SQL インジェクションとの戦いの経験が豊富な人は、これを修正したり、安心したりするのに役立ちますか?

ありがとう!

編集:

うわー、それはたくさんの素晴らしいインプットです。回答してくださった皆様、ありがとうございました。全文検索を調査し、少なくともクエリをパラメーター化します。

問題をよりよく理解できるように、すべての空白と一重引用符がエスケープされている場合、注入することは可能でしょう?

0 投票する
3 に答える
3130 参照

java - Findbugs が潜在的な SQL インジェクションの脆弱性を見つけられない

コード内の SQL インジェクションの脆弱性を見つけるのに役立つことを期待して、Eclipse 用の FindBugs プラグインをインストールしました。しかし、わざと入れても、何も見つからないようです。

次の例では、想定staticFinalBaseQueryは次のように宣言されています。

public static final String staticFinalBaseQuery = "SELECT foo FROM table where id = '";

そして、assumeuserInputfilterStringは、サンプル スニペットをラップするメソッドへの引数です。ユーザー入力から直接取得され、サニタイズされません。

たとえば、次のスニペットは警告をトリガーしません。

は静的staticFinalBaseQueryな最終文字列でありuserInputfilterString、ユーザー入力から直接の文字列であり、実行時にのみ使用可能であり、まったくスクラブされていません。明らかに、これは脆弱性です。

「準備されたステートメントが非定数文字列から生成されました」という警告がトリガーされることを期待しています。

次のスニペットでも警告は発生しません (これらのコンパイルされた形式はおそらく同じであるため、驚くことではありません)。

ただし、これにより警告が発生します。

空の文字列またはスペースを追加しても、警告はトリガーされません。

私の質問は、最初の例で FindBugs をトリガーするにはどうすればよいですか? また、最初の警告が発生しないのに、最後の警告が発生するのはなぜですか?

前もって感謝します!

編集:これはバグである可能性があるため、FindBugs のバグ追跡システムにバグを送信しました。しかし、誰かが何かヒントを持っているなら、私はそれを聞きたいです.

0 投票する
4 に答える
1793 参照

xss - XSS および SQL インジェクション攻撃を防ぎながら、フォーム入力でコード スニペットを許可する

XSS、SQL インジェクション、および関連する攻撃を防ぎながら、FCKeditor やその他のエディターのようなエディター (stackoverflow のように) にコード スニペットを入力できるようにするにはどうすればよいでしょうか。

0 投票する
3 に答える
5293 参照

sql-server - NV32ts とその SQL インジェクション攻撃は何をしようとしていますか?

最近、NV32ts の User-Agent を使用して、自分の Web サイトで多くの攻撃を受けています。

これらはすべて、クエリ文字列変数に対する次のインジェクション攻撃のバリエーションです (99999 は有効なクエリ文字列値を表し、攻撃は値に追加されます)。

(便宜上、次の攻撃を URL デコードしました)

また

また

sysobjects は Sql Server マスター データベースと関係があると思いますが、何を達成しようとしているのかわかりません。

編集: 私は今、2 つの異なるユーザー エージェントでこれらの同じことを見てきました:

  • NV32ts
  • Mozilla/4.0 (互換性; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5. 21022 ; WWTClient2 )
0 投票する
3 に答える
2239 参照

c# - ユーザーが直接入力する動的 LINQ、危険性はありますか?

ASP.NET MVC アプリケーションに、AJAX を使用して並べ替え可能 (サーバー側) およびフィルター可能にしたいテーブルがあります。他の場所でもかなり簡単に使用できるようにしたかったのですが、並べ替えとフィルター処理をクエリ式にハードコーディングするのは気が進まなかったので、式を動的に作成する方法を探しました。これを行うための最良の方法は、Dynamic LINQ を使用することでした。 .

以下のような URL からのユーザー入力は、動的 Where または OrderBy に直接挿入されます。

これにより、次の 2 つの式が生成されます。

データベースに直接スローされず、ここに直接SQLを挿入してもプロパティに反映できず、タイプセーフであるため機能しないことは理解していますが、私よりクリエイティブな人がいるのだろうか関係なく、それを悪用する方法を見つけることができます。私が考えることができる 1 つのエクスプロイトは、テーブルに表示されていないプロパティを並べ替え/フィルター処理できることですが、それでも表示されず、ハッシュによって防止できるため、これはそれほど有害ではありません。

ユーザーが直接入力できる唯一の方法は、OrderBy と Where を使用することです。

確認するだけです、ありがとう:)

0 投票する
15 に答える
2674 参照

c# - ユーザー生成の SQL クエリで Sql インジェクションを防ぐ方法

私はプロジェクト (プライベート、ASP.net Web サイト、https で保護されたパスワード) を持っています。要件の 1 つは、ユーザーがデータベースを直接クエリする Sql クエリを入力できることです。これらのクエリがデータベース自体に損害を与えたり、アクセス/更新できないはずのデータにアクセスまたは更新したりしないようにしながら、これらのクエリを許可できる必要があります。

実装のために次のルールを考え出しました。

  1. Select Table/View および Update Table の権限のみを持つdb ユーザーを使用します(したがって、drop/alter/truncate/insert/delete などの他のコマンドは実行されません)。
  2. ステートメントが「Select」または「Update」という単語で始まっていることを確認します
  3. (Regex を使用して) 単一引用符、空白、および文字で囲まれていないステートメントにセミコロンのインスタンスがないことを確認します。(ここで考えられるのは、2 番目のクエリを含めることができる唯一の方法は、入力文字列の一部ではないセミコロンで最初のクエリを終了することであるということです)。
  4. (正規表現を使用して) ユーザーが、クエリ/更新されている、結合に含まれているなどのテーブルにアクセスする権限を持っていることを確認します。これには、サブクエリが含まれます。(これを達成する方法の一部は、ユーザーが実際にはデータベースに存在しないテーブル名のセットを使用することです。クエリ解析の一部は、正しい対応するテーブル名をクエリに代入することです) .

何か不足していますか?

目標は、ユーザーが適切と思われる方法でアクセスできるテーブルをクエリ/更新できるようにし、データベースを損傷する偶発的または悪意のある試みを防ぐことです。(そして、ユーザーがSQLを生成することが要件であるため、クエリをパラメータ化する方法や、私が知っている組み込みツールを使用してサニタイズする方法はありません)。

0 投票する
3 に答える
7979 参照

oracle - pl sql内でクエリをパラメータ化することは可能ですか?

ここで記述されているストアドプロシージャは、現在、パラメータをクエリに連結しています。

ストアドプロシージャ内でこのクエリをパラメータ化することは可能ですか?おそらく好き:

注:
なぜそうするのか疑問に思われるかもしれませんが、spには2つの一般的なパラメーターがあります:sortFieldIndexsortDirection。これらを直接パラメータ化することはできないため、クエリは動的に生成されます。ただし、他のパラメーターを使用すると、クエリをインジェクション用に開くことができます。だから私はいくつかのパラメーターをパラメーター化する方法を探しています。