我有一个与此类似的语句,可以在其中插入“名称”
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;
第一条语句产生错误,但第二条语句运行良好。
是的。
如果我从字面上看你的帖子,你想在两个地方插入名字,一次在评论中,一次在文本字符串中:
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