問題タブ [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.
sql - SQLストアドプロシージャは安全ですか?
彼らは次のようなことをするよりもSQLインジェクションに対して脆弱ではありませmysql_query("SELECT important_data FROM users WHERE password = $password")
んか?
perl - SQL テーブル名インジェクションからの保護 - どこまで遠すぎるか?
私は PostgreSQL と通信する比較的小さなアプリケーションを開発していますが、SQL インジェクションに対する保護に関しては、どこまで行き過ぎているかについてフィードバックを得たいと考えていました。
アプリケーションは Perl であり、ORM モジュール (DBI のみ) を使用しません。SQL ステートメントは、プレースホルダーを使用して一般的な方法で構築されます。
テーブル名が補間される理由は、アプリケーションが複数のテーブルに対して同じ操作を実行する必要があるためです。これらのテーブルにはすべて「foo」列があります。
? の使用 placeholder は、ほとんどの単純な SQL インジェクション攻撃から保護します。私の質問は、プレースホルダーを使用できないテーブル名に関するものです。テーブルは構成ファイルから取得されますが、アプリは代替構成ファイルを使用する --configfile スイッチをサポートしています。
データベース資格情報は構成ファイルに保存されます。そのため、攻撃者が $cfg->{tablename} を悪意のあるものに置き換えた構成ファイルを作成する (または既定のファイルを置き換える) ことができる場合、アプリケーションは「だまされて」悪意のあるコードを実行される可能性があります。
攻撃者がこれを行うには、有効なデータベース資格情報を既に持っている必要があります。そうでない場合、アプリケーションは接続できません。資格情報を持っている場合、DBI を使用して独自のコードを作成するか、psql cli を使用して悪意のあることを行うことができます。
これを防ぐには、次の 2 つの方法が考えられます。
- ORM に切り替えます。この場合、$orm->get_class_for_table($cfg->{tablename} の順序で何かを行うことになります。
- SQLステートメントを準備する前に、正規表現を使用してテーブル名をサニタイズします
- $dbh->quote_identifier() を使用
明らかに 2 番目の方法は「安くて楽しい」方法です。しかし、上記の資格情報に関する声明を考えると、これらのアプローチのいずれかが本当に正当化されるのでしょうか? 攻撃者に別の攻撃ベクトルを使用するように強制することになると、どのくらいの労力がかかりすぎますか (実際に攻撃を防ぐ努力とは対照的に?)
ruby-on-rails - ユーザーがコード サンプルを入力できるようにする最も危険性の低い方法はどれですか?
ユーザーが後で参照できるようにコードのスニペットを保存できるRailsアプリケーションを実装しています。テキスト入力に Markdown を使用する予定で、おそらくwmd markdown editorを使用する予定です。(まさに Stackoverflow が使用するものです。)
人々が編集ボックスにコードを入力するという考えについて、私は少し心配しています。私が理解していることから、DB を台無しにする可能性のある SQL を入力したり、後で実行されていたずらをする JavaScript を入力したりする危険性があります。
通常、Rails にはこれを防ぐための機能がありますが、ユーザーがコードのスニペットを入力するように促されるので、私は特別な状況に置かれているのでしょうか?
知っておくべき追加の予防措置はありますか?
sql - 動的クエリでの LIKE
like
動的パラメーター化クエリでキーワードを使用したいと考えています。クエリを SQL インジェクションから保護したいので、値を渡したくありません。代わりに、クエリの実行中に基準を渡したいのですが、
これを行う方法はありますか?
これは私の動的クエリ文字列です。ここで値を渡したくありません。
c# - SELECT ステートメントから SQL インジェクション攻撃を受けることはできますか?
2 実際の質問:
可能な限りストアド プロシージャを使用する必要があることは承知していますが、次のことを教えてください。
A: (Select * from MyTable) などの SELECT ステートメントから SQL インジェクション攻撃を受けることはできますか?
B: また、ASP.NET で SQLDataSource を使用すると、SQL インジェクション攻撃を受ける可能性がありますか?
java - 複数のクエリを使用する場合の Java および MySQL での SQL インジェクション
INSERT ステートメントの一部として SQL インジェクションを含む Web アプリケーションを使用しています。次のようになります。
などの通常の複数クエリ インジェクションを挿入できます');truncate table1;--
が、Java + MySQL が使用されているため、複数のクエリをスタックすることはできないため、上記のインジェクションは MySQL からエラーになり、2 番目のクエリは実行されません。
したがって、基本的には、前述のアーキテクチャでそのような注入から達成できるのは、「ジャンクデータ」を注入することだけであり、これは注入なしでも可能です。
を使用するなどの手法は他にもありますがload_file()
、それでも探している範囲でデータベースを操作することはできません。
ここで何か不足していますか?データベースを制御するためにこの注入を使用する他の方法はありますか?
vb.net - ストアド プロシージャを呼び出す Web サービスには、どの程度のサニタイズが必要ですか?
VB.Net で一連の Web サービスを構築しています。
各 Web サービスは複数の文字列値を受け取り、いくつかの検証/処理を実行してから、Linq to SQL を使用してストアド プロシージャを呼び出します。一部の文字列には、データベースに保存されているユーザー データが含まれています。
Web サービスから渡されたこれらの文字列値は、一重引用符、セミコロン、およびさまざまなブラケット タイプをトラップするためにエスケープされます。
datacontext.spname(parameter1, parameter2) メソッドを使用して SP を呼び出しています。
その目的は、パフォーマンスを維持しながら、Web サービスの回復力を可能な限り高めることです。
SQL インジェクション攻撃を防ぐために十分な対策を講じていますか?
stored-procedures - SQL インジェクション - ストアド プロシージャの呼び出し (iSeries 上) に危険はありませんか?
私はいくつかの検索を行いましたが、SQL インジェクションに関する特定の質問があり、フィールド データのサニタイズなどを行うためにスティックの間違った端を取得している可能性があると思われるため、入力を取得できることを願っています:-
iSeries でストアド プロシージャを呼び出す Java プログラムがあります。ストアド プロシージャには、舞台裏で CL / RPG コードがあります。ストアド プロシージャは、Web ページからのデータを使用してパラメーターを介して呼び出されます。たとえば、呼び出しは次のようになります。
Web サイトから「field1Value」などに入力された文字について心配する必要がありますか?それともストアド プロシージャ コールであるため、SQL インジェクションの危険性はありませんか? その処理の一部として、舞台裏の RPG プログラムが独自の SQL ステートメントで「field1Value」を使用するかどうかに依存しますか?
プロシージャに渡されるフィールドの長さは固定長であるため、たとえば、「危険な」文字を同等の html に変換することはできません。
これに関するフィードバック (必ずしも iSeries 固有である必要はありません) をお待ちしております (これはばかげた質問かもしれません!)。
asp.net - ASP 登録フォーム ページへの SQL インジェクション攻撃?
ASPまたはASP.Netで作成された登録フォームへのSQLインジェクション攻撃のプロセスを知りたいですか?
php - この PHP/MySQL ステートメントは SQL インジェクションに対して脆弱ですか?
簡単な質問ですが、私は PHP の構文に詳しくないので、次のコードが SQL インジェクション攻撃から安全かどうか疑問に思っています:
などなど
私は少しグーグルで調べましたが、インジェクションセーフコードは WHERE food_type = \'' とは異なっているようです。$動物。ここでは「\」構文が使用されています。
申し訳ありませんが、ここで使用されている PHP または MySQL のバージョンがわかりません。また、サードパーティのライブラリが使用されている場合は、専門知識をお持ちの方から情報を提供していただけますか?
アップデート
\ はステートメントでどのような目的に使用されますか?:
私のグーグルで、私は多くの参照に出くわしましたmysql_real_escape_string
...これはSQLインジェクションやその他の不快感から保護する機能ですか?
クラス宣言は次のとおりです。
mysql_real_escape_string
では、そこに含まれていると考えられるでしょうか。
SSDataController の実装を確認する必要がありますか?