5

私は現在MySqlを使用していますが、将来にわたって利用できるようにするためにODBCソリューションを使用したいと考えています。

ODBCデータベースに渡す前にユーザー入力をサニタイズするにはどうすればよいですか?

そして、その間、文字列を二重引用符で囲みます。たとえば、 "INSERT INTO VALUES(description)" "`ですが、テキスト自体に二重引用符が含まれている場合はどうなりますか?

4

3 に答える 3

8

パラメータ化されたSQL文を使用してみてください

このような。

INSERT INTO MyTable (Field1,Field2) VALUES (:Param1,:Param2)

パラメータの使用方法の詳細については、embarcaderoのこの記事を確認してくださいUsing Parameters in Queries.

于 2011-06-01T07:55:04.797 に答える
8
  1. ODBCは、MySQLを操作するための最適な方法ではありません。将来、少数のDBMSをサポートする必要がある場合でも、dbExpress(Delphiに付属)やサードパーティ( AnyDAC(商用)、ZeosLib(フリーウェア)など)を含むマルチDBMSデータアクセスライブラリを検討できます。
  2. 文字列定数をMySQLクエリに置き換える必要がある場合は、特殊文字をエスケープするか、文字列を16進表現に変換する必要があります。これにより、SQLインジェクションや構文エラーの可能性からユーザーを保護します。ただし、クエリの準備はより複雑になります。
  3. 最良の方法-パラメータを使用し、パラメータ値としてリテラルを送信します。それは簡単で安全です。
于 2011-06-01T09:12:27.813 に答える
3

可能であれば、おそらくdelphiからRMIを介してHibernateを使用します。これはJava中心ですが、プログラマーを基盤となるDBからほぼ完全に隔離し、前述の問題やその他多くの問題を処理します。

ところで、二重引用符で質問に答えるには、二重引用符を含む値を保存するには、二重引用符としてエスケープします。たとえば、

This is "my" text

として保存されます

"This is ""my"" text"
于 2011-06-01T07:48:47.613 に答える