問題タブ [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 投票する
1 に答える
466 参照

sql-server - SqlCeResultSet と SQL インジェクション

このコードを使用して SqlCeResultSet で行を挿入すると、

SQL インジェクション攻撃を防ぎますか?

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

c# - SQL インジェクション攻撃と亜音速

SubSonic を使用して Web プロジェクト用の DAL を作成する場合、SQL インジェクション攻撃の防止について心配する必要はありますか?

0 投票する
6 に答える
4585 参照

php - グッドプラクティスとセキュリティをクエリするPHP/SQLデータベース

ですから、私は少し経験豊富なphp開発者であり、2007年から「ひどいことをしている」のです。ただし、アプリケーションのセキュリティ保護に関しては、まだ比較的問題があります。自分ができること、すべきことをすべて知っているわけではないという意味で。

私はPHPWebアプリケーションの保護を取り上げ、その過程で物事をテストする方法を読んでいます。データベースクエリ(主にmysqlの下)に関連する一般的なSOグループについていくつか質問があります。

データベースにデータを配置するアプリを作成する場合、mysql_real_escape_stringと入力データの一般的なチェック(is_numericなど)で十分ですか?SQLインジェクションとは異なる他のタイプの攻撃についてはどうでしょうか。

誰かがストアドプロシージャとプリペアドステートメントを、あなたがそれらを作成して呼び出すよりも少し多くの情報で説明できますか?それらがどのように機能するのか、舞台裏でどのような検証が行われているのかを知りたいです。

私はphp4にバインドされた環境で作業していますが、当面はphp5はオプションではありません。他の誰かが以前にこの立場にあったことがありますが、すべてのクールな子供たちがその甘い新しいmysqliインターフェイスを使用している間に、アプリケーションを保護するために何をしましたか?

アップグレードや可能な移行(php4からphp5への移行など)に耐えられるインフラストラクチャの作成に重点を置いて、人々が有利であると考えている一般的なグッドプラクティスは何ですか。

注:検索したところ、php-mysqlのセキュリティに影響を与えるこれに類似したものは見つかりませんでした。

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

php - addslashes() による SQL インジェクションの例?

PHP ではmysql_real_escapeaddslashes. addslashesただし、 SQL インジェクションが発生する状況の例は見つかりませんでした。

誰でもいくつかの例を挙げることができますか?

0 投票する
9 に答える
108175 参照

python - データベースクエリ文字列の引用符をエスケープする良い方法はありますか?

私はあらゆる種類のPythonモジュールを試しましたが、エスケープしすぎるか、間違った方法でエスケープします。Pythonで引用符( "、')をエスケープするために見つけた最良の方法は何ですか?

0 投票する
2 に答える
7260 参照

iphone - sqlite3_bind_text は iPhone での SQL インジェクションを防ぐのに十分ですか?

ステートメントを考えると:

次のsqlite3_bind_text(および関連するsqlite3_bind_*関数) の使用は、SQL インジェクション攻撃を防ぐのに十分ですか?

0 投票する
21 に答える
29084 参照

c# - パラメータなしで SQL インジェクションを回避する

コードでパラメーター化された SQL クエリを使用することについて、ここで別の議論を行っています。議論には 2 つの側面があります。SQL インジェクションから保護するために常にパラメーターを使用する必要があると言う私と他の何人かと、それが必要だとは思わない他の人たちです。代わりに、SQL インジェクションを回避するために、すべての文字列で単一のアポストロフィを 2 つのアポストロフィに置き換えたいと考えています。データベースはすべて Sql Server 2005 または 2008 を実行しており、コード ベースは .NET Framework 2.0 で実行しています。

C# での簡単な例を挙げましょう。

これを使用してほしい:

他の人はこれをしたいのですが:

SafeDBString 関数は次のように定義されています。

ここで、クエリのすべての文字列値で SafeDBString を使用する限り、安全です。右?

SafeDBString 関数を使用する理由は 2 つあります。第一に、これは石器時代から行われてきた方法であり、第二に、データベースで実行される exact クエリが表示されるため、SQL ステートメントのデバッグが容易になります。

それで。私の質問は、SQL インジェクション攻撃を回避するために SafeDBString 関数を使用するだけで本当に十分かどうかです。この安全対策を破るコードの例を見つけようとしていますが、その例は見つかりません。

これを打破できる人はいますか?どのようにしますか?

編集: これまでの返信を要約するには:

  • Sql Server 2005 または 2008 で SafeDBString を回避する方法はまだ見つかっていません。それはいいと思いますか?
  • いくつかの返信で、パラメーター化されたクエリを使用するとパフォーマンスが向上することが指摘されました。その理由は、クエリ プランを再利用できるからです。
  • また、パラメーター化されたクエリを使用すると、コードが読みやすくなり、保守が容易になることにも同意します。
  • さらに、さまざまなバージョンの SafeDBString、文字列から数値への変換、および文字列から日付への変換を使用するよりも、常にパラメーターを使用する方が簡単です。
  • パラメータを使用すると、自動型変換が得られます。これは、日付や 10 進数を扱う場合に特に便利です。
  • 最後に: JulianR が書いたように、セキュリティを自分でやろうとしないでください。データベース ベンダーは、セキュリティに多くの時間とお金を費やしています。私たちがより良くできる方法はなく、彼らの仕事をやろうとする理由もありません.

そのため、SafeDBString 関数の単純なセキュリティを破ることはできませんでしたが、他にも多くの良い議論を得ました。ありがとう!

0 投票する
1 に答える
5106 参照

perl - DBD :: Oracleを使用して、1つのクエリで複数のステートメントを実行することは可能ですか?

execute()1つのSQLステートメント内で複数のSQLステートメントを実行できるかどうか、またはPerlを介してdo()呼び出しを実行できるかどうかを知りたいです。例:DBD::OracleDBI

私は実際にそのようなことをしたいのではなく、SQLインジェクション攻撃の成功によって起こりうる被害を測定したいので、これを尋ねます。はい、この質問への回答に関係なく、バインド値や信頼できる入力のみを使用して、SQLインジェクションの可能性をルートで排除する必要があることを私は知っています。しかし、問題は依然として存在しますDBD::Oracle。ステートメント?

関連する例として、この「機能」を明示的に有効にDBD::mysqlする接続オプションがあります。mysql_multi_statements似たような、おそらく文書化されていない、あいまいなOracle OCIオプションがあり、それを介して何らかの方法でアクセスDBD::Oracleできると、同じことが可能になるという気持ちを揺るがすことはできません。

重要な場合、これは次のとおりです。

  • perl5.8.8
  • DBD::Oracle1.22
  • Oracle 11g(11.01.0700)
0 投票する
7 に答える
2836 参照

php - PHPのデータベース宛てのユーザー入力をサニタイズします

私はこのコードを持っています:

私はそれをサニタイズするためにこのコードを試しました:

しかし、mysql_real_escape行で次のエラーが発生します。

ここでユーザー名を取得しますが、十分に安全かどうかはわかりません。

どうも

0 投票する
6 に答える
10988 参照

php - SQLインジェクションを停止するために記号を文字コードに置き換えるPHP関数

MySQLインジェクションの試行を停止するphp関数を作成しようとしています。私が行っているのは、str_replace()を使用して記号を削除し、それらをHTML文字コードに置き換えることです。私の問題は、すべてのコードに&#;が含まれていることです。しかし、それらの記号をそれらのコードに置き換えたいとも思います。コードを次のようなものに変更せずにこれを行うにはどうすればよいですか?

これが私の関数です: