タグ付けされた質問 「sql-injection」

6
ストアドプロシージャはSQLインジェクションを防ぎますか?
ストアドプロシージャがPostgreSQLデータベースに対するSQLインジェクション攻撃を防ぐのは本当ですか?少し調べてみると、ストアドプロシージャのみを使用していても、SQL Server、Oracle、MySQLはSQLインジェクションに対して安全ではないことがわかりました。ただし、この問題はPostgreSQLには存在しません。 PostgreSQLコアのストアドプロシージャの実装は、SQLインジェクション攻撃を防ぎますか?または、ストアドプロシージャのみを使用する場合でも、PostgreSQLはSQLインジェクションの影響を受けますか?もしそうなら、例を示してください(本、サイト、論文など)。


2
ストアドプロシージャ内のこのクエリでSQLインジェクションが発生しないのはなぜですか?
次のストアドプロシージャを作成しました。 ALTER PROCEDURE usp_actorBirthdays (@nameString nvarchar(100), @actorgender nvarchar(100)) AS SELECT ActorDOB, ActorName FROM tblActor WHERE ActorName LIKE '%' + @nameString + '%' AND ActorGender = @actorgender 今、私はこのようなことをしてみました。私はこれを間違っているかもしれませんが、そのような手順がSQLインジェクションを防ぐことができることを確認したいです: EXEC usp_actorBirthdays 'Tom', 'Male; DROP TABLE tblActor' 以下の画像は、上記のSQLがSSMSで実行され、エラーではなく結果が正しく表示されることを示しています。 ところで、クエリの実行が完了した後、セミコロンの後にその部分を追加しました。その後、再度実行しましたが、テーブルtblActorが存在するかどうかを確認したところ、まだそこにありました。私は何か間違っていますか?または、これは本当に注射防止ですか?私がここで尋ねようとしているのは、このような安全なストアドプロシージャですか?ありがとうございました。

2
スマイリーフェイスをMySQLに挿入する方法(()
私はMySQL 5.5.21を使用しており、「\ xF0 \ x9F \ x98 \ x8A」のスマイリーフェイス文字を挿入しようとしています。しかし、私の人生では、どうすればいいのかわかりません。 私が読んでいるさまざまなフォーラムによると、それは可能です。しかし、私がそれを試みるたびに、データは切り捨てられます。 mysql> INSERT INTO hour ( `title`, `content`, `guid` , `published` , `lang` , `type` , `indegree` , `lon` , `lat` , `state` , `country` , `hour` ) VALUES ( "title" , "content 😊 content" , "guid" , 1, 1, "WEBLOG", …

4
ストアドプロシージャで動的SQLを使用したくないのはなぜですか?
動的SQLを使用したくないと言った人がいました。具体的な例や実際の例を挙げていただけますか?個人的には、データベースに数回コーディングします。柔軟性があるので大丈夫だと思います。私の推測では、SQLインジェクションまたはパフォーマンスについてです。他に何か?

3
Oracleで一重引用符を使用せずに文字列から抜け出し、SQLを注入する方法はありますか?
Oracleベースのアプリケーションをテストしていますが、次のコードが見つかりました。 クエリ= "従業員から名前を選択WHERE id = '" + PKID + "';" つまり、クエリ文字列には、URLから直接取得されたPKID値を引用符で囲みます。 明らかに、これは起こるのを待っている古典的なSQLインジェクションです...ただし、アプリケーションはCA SiteMinderの背後にあり、単一引用符で囲まれたURLを(任意の形式で)アプリケーションに渡されないようにブロックします。 文字列から抜け出し、一重引用符を使用せずにSQLを挿入する方法はありますか? 編集:申し訳ありませんが、私は明確にすべきだった-私はそれがどのように書かれるべきか理解していますが、私はそれが悪用可能な問題であることを人々に説得する必要があります。現時点では、単一引用符をブロックするsiteminderの背後にあるため、優先度の低い修正になります。

1
SQL Serverのdynamic-sqlで識別子を引用する関数は何ですか?
動的SQL生成のために識別子を安全に引用するSQL Serverの方法は何ですか。 MySQLには quote_identifier PostgreSQLには quote_ident 動的に生成されたステートメントに動的に生成された列名を指定すると、列自体がSQLインジェクション攻撃ではないことをどのように確認できますか? SQL文があるとします。 SELECT [$col] FROM table; これは本質的に同じです 'SELECT [' + $col + '] FROM table;' インジェクション攻撃を阻止するもの $col = "name] FROM sys.objects; \r\n DROP TABLE my.accounts; \r\n\ --"; その結果 SELECT [name] FROM sys.objects; DROP TABLE my.accounts; -- ] FROM table;

1
インジェクション攻撃から保護するためにQUOTENAMEを引き続き使用する必要がありますか?
今日、古いストアドプロシージャを見ていquotenameて、入力パラメーターで使用されていることに気付きました。それが何をしているのかを正確に理解するために少し掘り下げた後、私はこのサイトを見つけました。私はそれが何をするか、そしてそれをどのように使うかを理解しました、しかしサイトはそれがSQLインジェクション攻撃からの緩和として使われると言います。asp.netを使用してデータベースを直接クエリするアプリを開発していたときは、ADO.Netパラメータを使用してユーザー入力をリテラル値として渡し、ストアドプロシージャでそれを保護することについて心配することはありませんでした。 現在、自分が記述し​​ていないアプリケーションで使用されるストアドプロシージャを記述しているので、プロシージャレベルでインジェクション攻撃から保護する必要quotenameがあります。これは、これを行うための最良の方法であるか、より新しい機能/優れた方法があります。方法? この思考パターンに私を導いたコード(@parm1ユーザー入力パラメーターです): 'SELECT project [Project], project_desc [Description], customer [Customer], cpnyid [Company] FROM PJPROJ (nolock) where project like ' + quotename(@parm1,'''') + '

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.