0

「名前」を挿入できる、これに似たステートメントがあります

select * from table where column in (/**name*/ 'name')

を現在確認中です')'

元。彼らは入れることができ'*/; drop table--'ますが、かっこがないため、SQLはエラーをスローしますか?

括弧を閉じることができない場合でも、セキュリティ上のリスクはありますか?

4

4 に答える 4

3

なぜそれを危険にさらすのですか?動的な値には常に SQL クエリ パラメーターを使用してください。そうすれば、エスケープや危険にさらされているかどうかを心配する必要はありません。

使用しているプログラミング言語と RDBMS ブランドを指定すると、クエリ パラメーターの使用例を含むリソースを参照できます。

于 2012-12-14T00:34:27.287 に答える
2

はい-ステートメントを(無効ではありますが)終了してから、独自に実行した場合はどうなりますか?

これは機能します(mysqlでローカルにテストされています):

select * from TABLE where (col = ''; select * from TABLE;

最初のステートメントはエラーを生成しますが、2番目のステートメントは正常に実行されます。

于 2012-12-14T00:31:20.613 に答える
0

はい。

私があなたの投稿を文字通り受け取る場合、あなたは2つの場所に名前を挿入したいと思います。1つはコメントに、もう1つはテキスト文字列に挿入します。

select * from table where column in (/**/select column from table where column !=/**/ '/select column from table where column !=/*');
于 2012-12-14T00:31:59.323 に答える
-1

ユーザーが入力したデータは常にエスケープしてください。

mysqli_real_escape_string

または古い学校

mysql_real_escape_string
于 2012-12-14T00:31:08.287 に答える