2010-11-29 6 views
13

誰もが何かを知っていますOR 1#は、mysqlの注入のコンテキストで意味ですか?#はSQLで何を意味しますか?

+2

「#」記号には、あなたができる* Google * – BoltClock

+0

:)いくつかの英語の名前(数字、オクトソープ、ヘックス、ハッシュ、シャープ)があります。すべての深刻なことに、私はmysqlのポンド記号などのためにGoogleに質問した後、英国ポンドのページを手に入れました。 – munchybunch

+4

皮肉なことに、これはmysql hash symbolとmysql octothorpeの2番目の検索結果。 – munchybunch

答えて

31

MySQLのラインコメントデリミタのバージョンです。標準SQLでは、行コメント区切り文字は--です。だから、SQLインジェクションの文脈で

-- This is a standard SQL comment. 
# This is a MySQL comment. 

、攻撃者はMySQLを使用している知っていれば、彼はMySQLは#背後にあるものは何でも無視して、唯一のものを実行させる、急に悪質なSQL文を終了するためにそれを使用することができますそれはその前に来る。ただし、これは単一行のSQL文に対してのみ有効です。ここでは例です:

入力:

ユーザー名:fake' OR 1#
パスワード:pass

結果として得られるSQL:

SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass' 

、このように実行されるごとを返します行

SELECT * FROM users WHERE username = 'fake' OR 1 
1

これはコメントの先頭です。それ以降のことは、パーサーがスキップすることを意味します。

+1

答えを明確にするために、同じ行にあるすべて... – Darbio

+1

@JD:a-ha、SQLインジェクションから保護するために、クエリにもっと多くの行が必要です皮肉);-) – zerkms

関連する問題