Design patterns 如何基于参数安全地编码目录删除?
我有一个脚本,它协调了许多进程,所有进程都在参数文件中定义的位置创建日志(即与脚本分离)。在运行进程之前,脚本会清空日志位置,例如Design patterns 如何基于参数安全地编码目录删除?,design-patterns,cmd,scripting,delete-file,Design Patterns,Cmd,Scripting,Delete File,我有一个脚本,它协调了许多进程,所有进程都在参数文件中定义的位置创建日志(即与脚本分离)。在运行进程之前,脚本会清空日志位置,例如 rem LOGLOC is loaded from a parameter file Del /F /Q /S %LOGLOC%\*.* 显然非常危险。如果由于任何原因LOGLOC定义不正确,这可能是灾难性的。我修改了脚本以增加一些安全性 if "%LOGLOC%" equ "" ( ECHO FATAL ERROR: LOGLOC not defined
rem LOGLOC is loaded from a parameter file
Del /F /Q /S %LOGLOC%\*.*
显然非常危险。如果由于任何原因LOGLOC定义不正确,这可能是灾难性的。我修改了脚本以增加一些安全性
if "%LOGLOC%" equ "" (
ECHO FATAL ERROR: LOGLOC not defined
exit /b 1
)
Del /F /Q /S %LOGLOC%\*.*
。。。但不考虑LOGLOC可能被意外定义为'.
或'...'
的情况
在以可能有害的方式使用参数之前,是否有更好的模式检查参数
编辑:我正在按照Fejese的建议添加以下验证规则
如果我能解决这些问题,我将发布结果,但Fejese为我指出了正确的方向,这是值得赞扬的…除非您设置一些规则,否则脚本将无法判断获取的参数是否安全
- 您可以在脚本中硬编码必须匹配的前缀
- 例如,您可以将删除模式限制为仅删除日志文件