「名前」を挿入できる、これに似たステートメントがあります
select * from table where column in (/**name*/ 'name')
を現在確認中です')'
。
元。彼らは入れることができ'*/; drop table--'
ますが、かっこがないため、SQLはエラーをスローしますか?
括弧を閉じることができない場合でも、セキュリティ上のリスクはありますか?
「名前」を挿入できる、これに似たステートメントがあります
select * from table where column in (/**name*/ 'name')
を現在確認中です')'
。
元。彼らは入れることができ'*/; drop table--'
ますが、かっこがないため、SQLはエラーをスローしますか?
括弧を閉じることができない場合でも、セキュリティ上のリスクはありますか?
なぜそれを危険にさらすのですか?動的な値には常に SQL クエリ パラメーターを使用してください。そうすれば、エスケープや危険にさらされているかどうかを心配する必要はありません。
使用しているプログラミング言語と RDBMS ブランドを指定すると、クエリ パラメーターの使用例を含むリソースを参照できます。
はい-ステートメントを(無効ではありますが)終了してから、独自に実行した場合はどうなりますか?
これは機能します(mysqlでローカルにテストされています):
select * from TABLE where (col = ''; select * from TABLE;
最初のステートメントはエラーを生成しますが、2番目のステートメントは正常に実行されます。
はい。
私があなたの投稿を文字通り受け取る場合、あなたは2つの場所に名前を挿入したいと思います。1つはコメントに、もう1つはテキスト文字列に挿入します。
select * from table where column in (/**/select column from table where column !=/**/ '/select column from table where column !=/*');
ユーザーが入力したデータは常にエスケープしてください。
mysqli_real_escape_string
または古い学校
mysql_real_escape_string