【发布时间】:2016-09-23 18:41:46
【问题描述】:
我知道我需要转义 @cmd var 才能运行:
declare @cmd 'xp_cmdshell ''echo Mary|Warrior > c:\test.txt'''
exec (@cmd)
因为字符'|'运行命令时会失败。
所以,我之前的跑步设置:
set @cmd = replace(@cmd, '|', '^|')
因为@cmd var 可以是任何字符串(由用户发送)...我还需要担心哪些其他字符?
(我知道其中有几个,例如 >、
【问题讨论】:
-
为什么要执行从用户那里收到的字符串值?这是一个潜在的 sql 注入漏洞。
标签: sql-server tsql xp-cmdshell