• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLインジェクション対策(クオーテーション関連)

SQLインジェクション対策とは?シングルクオーテーションとダブルクオーテーションの違い

muuming2001の回答

回答No.1

SELECT * FROM users WHERE name = "(入力値)"; DBによっても違うかもしれないけど、そもそも上記SQLは通るの? http://www.dbonline.jp/sqlite/type/index4.html

march4
質問者

お礼

回答をありがとうございます。 >そもそも上記SQLは通るの? ここで話題にしている「SQLite3のDB」では、 SQL文の中で文字列をダブルクオーテーションで、 くくることは出来るようです。 参考: http://programing.dip.jp/index.php?SQLite%2F%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%93%8D%E4%BD%9C

関連するQ&A

  • SQLインジェクションの対策

    SQLインジェクションの対策 いつもお世話になっております。 SQLインジェクションの対策についてお伺いいたします。 もともと↓のようなSQL文だったものを "select user_id from table where user_id='{$user_id}'" 以下のように変更しました。 "select user_id from table where user_id='" . mysql_real_escape_string($user_id) . "'" 以下のように実行されていたSQL文は select user_idfrom table where user_id='10001' and 'a'='a' ↓のようにエスケープ処理して実行されるようになりました。(入力値は「10001' and 'a'='a」) select user_id from table where user_id='10001\' and \'a\'=\'a' ですが、phpMyAdminで実行してみるとどちらのSQL文も同じ結果が取得できてしまいます。 これでは対策になっていないと思ったので、質問させていただきました。 (magic_quotes_gpcはoffに設定しています。) なにか他の方法がいいのでしょうか。 ご教示よろしくお願いいたします。 <環境> PHP 5.1.6 MySQL 5.0.45

    • ベストアンサー
    • PHP
  • ASPでのSQLインジェクション対策

    ASPにて、ADOでAccessにアクセスする際にSQLインジェクション対策はどのようにしたらよいでしょうか。 現状は以下の様にしています。(name)は画面から受け取ったパラメータです。 Set aConn = CreateObject("ADODB.Connection") aConn.Provider = "Microsoft.Jet.OLEDB.4.0" aConn.ConnectionString = Server.MapPath("DB.mdb") aConn.open SQL = "SELECT A FROM TBL WHERE NAME = " & name ...... 宜しくお願いします

  • '(シングルクォーテーション)の検索

    '(シングルクォーテーション)の検索 SQL Server 2005 Express Edition を使っています。 '(シングルクォーテーション)を含む文字列を検索したいのですが できずに困っています。 どのようなクエリを組むべきでしょうか? 教えてください。 よろしくお願いします。 現在は select * from テーブル名 where 列名 like '%\'%' としていますがエラーになります。

  • ダブルコーテーションやシングルコーテーション

    私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

    • ベストアンサー
    • MySQL
  • PHPでjavascriptを書き出すときのクォーテーションの使い方

    PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、 ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか? 例 $a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>"; *test()はjavascriptの関数とします。 このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。

    • ベストアンサー
    • PHP
  • SQLインジェクションが発生する理由

    初めての質問です。よろしくお願いします。 今現在、SQLインジェクションというものが問題になっていますよね いろいろなサイトを回って調べて見たのですが、具体的な対策として、「'(シングルクォーテーション)」などの特殊文字を確実にエスケープすること、くらいしか対策が書かれておりません。 特殊文字のエスケープさえしっかりしておけばSQLインジェクションは発生しない、という印象を受けたのですが、SQLインジェクションがおきてしまったサイトではエスケープ処理をしていなかったということなのでしょうか? それとも、エスケープ処理をしていても何らかの方法で不正なSQLの命令を実行されてしまうのでしょうか? どうにもわからなくて困っているので、どうかよろしくお願いいたします。

  • SQLインジェクション

    教えてください。 よろしくお願いいたします。 SELECT * FROM table WHERE user='$uid' AND password='$pass' のエスケープ処理をしていない場合に、 ID=aaa パスワード='or'a'='a と入力されると、 SELECT * FROM table WHERE user='aaa' AND password="or 'a'='a' が実行されてしまいますが、 「password=」と「or」の間のダブルクォーティションは、 どのような意味を持つのでしょうか。

  • SQLiteのLike句で抽出できない

    SQLiteのLike句で抽出できないレコードがあります。 原因についてご教授いただけますでしょうか。 以下、操作手順になります。 ■データベースの作成 C:\>sqlite3.exe member.db SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" ■テーブルの作成、レコードの追加 sqlite> create table t_member(name text, age integer); sqlite> insert into t_member values('山田一郎', 25); sqlite> insert into t_member values('田中次郎', 35); sqlite> insert into t_member values('鈴木三郎', 45); ■検索 sqlite> select * from t_member where name like '%一郎'; 山田一郎|25 sqlite> select * from t_member where name like '%次郎'; 田中次郎|35 sqlite> select * from t_member where name like '%三郎'; sqlite> 三郎だけが検索条件に適合しないのは何故でしょうか。 よろしくお願いします。

  • シングルクォーテーションとダブルクォーテーション

    いつも楽しく拝見させて頂いています。 初心者ですが宜しくお願いします。 シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。 select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。 以上宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Oracleのシングルクォーテーション

    いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。