登録ユーザー名が単一引用符と二重引用符を使用できないことによる思考
1038 ワード
機械室の有料システムは長い間ノックしていたが、CSDNにブログを書くのも久しぶりだった.機械室料金システムについて書けるものが多く、同期のものもたくさん書いてあります.機械室料金システムをテストするとき、ユーザー名に単一引用符または二重引用符が含まれている場合、システムがエラーまたはクラッシュするたびに発生します.
その理由は、現在書いているクエリー文が一般的に次のように書かれているからです.
StrSQL="select * from Student_Info where UserName='"& Trim(txtUserName.text) & "'"
UserNameに一重引用符または二重引用符が表示された場合、上記のコードは間違っています.もちろん、ユーザー名の一重引用符と二重引用符の使用を禁止するのが最も簡単な解決策です.以下のようにします.
もちろんこれで問題を解決しましたが、この問題を解決する他の方法はありませんか?もしあるならどうして使わないのですか.今のところまだ見つかっていませんが、ネット上でも関連する解決策が検索されていません(検索場所や方法が間違っているのかもしれません).
この問題を持って、私がテストしたいくつかのサイトのユーザー名にも単一引用符と二重引用符は使用できないことに気づきました.もちろん、他の特殊な記号も無効になっています.たまたま「SQL注入」という言葉を耳にしましたが、SQL注入を防ぐために無効にしたのではないかと思います.後でSQL注入の概念について調べてみるとあまり関係ないような気がして(今のところ私の理解)、この可能性のある構想はこのように私に殺されました.
読者に答えてほしい!
その理由は、現在書いているクエリー文が一般的に次のように書かれているからです.
StrSQL="select * from Student_Info where UserName='"& Trim(txtUserName.text) & "'"
UserNameに一重引用符または二重引用符が表示された場合、上記のコードは間違っています.もちろん、ユーザー名の一重引用符と二重引用符の使用を禁止するのが最も簡単な解決策です.以下のようにします.
Private Sub txtUserName_KeyPress(KeyAscii As Integer)
If KeyAscii = 39 Or KeyAscii = 34 Then
MsgBox " !"
KeyAscii = 0 '
End If
End Sub
もちろんこれで問題を解決しましたが、この問題を解決する他の方法はありませんか?もしあるならどうして使わないのですか.今のところまだ見つかっていませんが、ネット上でも関連する解決策が検索されていません(検索場所や方法が間違っているのかもしれません).
この問題を持って、私がテストしたいくつかのサイトのユーザー名にも単一引用符と二重引用符は使用できないことに気づきました.もちろん、他の特殊な記号も無効になっています.たまたま「SQL注入」という言葉を耳にしましたが、SQL注入を防ぐために無効にしたのではないかと思います.後でSQL注入の概念について調べてみるとあまり関係ないような気がして(今のところ私の理解)、この可能性のある構想はこのように私に殺されました.
読者に答えてほしい!