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的建议添加以下验证规则

  • 检查长度是否至少为4个字符,例如C:\L
  • 验证A-Z中的字符1
  • 验证chars 2,3=:\
  • 验证路径是否存在并且是否为目录

  • 如果我能解决这些问题,我将发布结果,但Fejese为我指出了正确的方向,这是值得赞扬的…

    除非您设置一些规则,否则脚本将无法判断获取的参数是否安全

    • 您可以在脚本中硬编码必须匹配的前缀
    • 例如,您可以将删除模式限制为仅删除日志文件

    是否可以选择从用户处获得确认?让它互动?或者这个脚本必须在没有人工干预的情况下运行?脚本每天晚上都在无人值守的情况下运行。