クライアント側で軽い検証を行った従来の ASP で記述されたフォームがあります。アポストロフィがあるとフォームが失敗するという 1 つのことを除いて、すべてがうまく機能します。フィールドの 1 つにしばしばアポストロフィが含まれる場合があります (姓フィールド - たとえば、ユーザーの姓が O'Brien の場合、フォームは失敗します)。
これを修正するにはどうすればよいですか?
クライアント側で軽い検証を行った従来の ASP で記述されたフォームがあります。アポストロフィがあるとフォームが失敗するという 1 つのことを除いて、すべてがうまく機能します。フィールドの 1 つにしばしばアポストロフィが含まれる場合があります (姓フィールド - たとえば、ユーザーの姓が O'Brien の場合、フォームは失敗します)。
これを修正するにはどうすればよいですか?
ASP コードを調べる必要があります。次のようなコードが表示された場合
string SQL =
"SELECT user_id, first_name,last_name FROM users WHERE username = "
+ myUserName;
myUserName がユーザーに由来する場合、あなたは間違いなく脆弱です。
修正は、入力をエスケープしようとする (つまり、すべての "'" を "''" に置き換える) ことではなく、SQL インジェクションに関するこの記事とそれを回避する方法で概説されているように、まったく異なる方法を使用することです。
一言で言えば、 bobby-tablesサイトから次のようなものを試してください
String username = "joe.bloggs";
SqlCommand sqlQuery = new SqlCommand(
"SELECT user_id, first_name,last_name FROM users WHERE username = ?username",
sqlConnection);
sqlQuery.Parameters.AddWithValue("?username", username);