QQ截图20201118185926.png

Sqlserver、Oracle 和 PostgreSql

1、—(双连字符) 单行注释

2、/ / 多行注释


Mysql

1、— (双连字符) 单行注释 要求第二个连字符后面跟一个空格或控制字符 (如制表符、换行符等)

在get参数中空格会被url编码 这里最后的空格用+,在请求的时候不会被urlencode,到后端sql语句中就会成为一个正常的空格,— 后面的语句就会被注释 解决方案:—+

2、# 单行注释

get参数一般不用# ,url中的#号代表html页面中的锚点,数据传输过程并不会一起带到后端, 解决方案:#url编码%23

3、/ / 多行注释

如果在注释的开头部分添加一个感叹号并在后面跟上数据库的版本编号,那么该注释将被解析成代码。只要安装的数据库版本高于或等于注释中包含的数据库版本,本代码就会被执行

SELECT 1 /!40119+1/
如果mysql版本为4.01.19或更高版本 查询结果为2
QQ截图20201119190636.png