如何在bash脚本中验证文件名?
发布时间:2020-12-16 01:47:29 所属栏目:安全 来源:网络整理
导读:关于我的应用程序: 我正在用bash脚本编写一个小应用程序.应用程序必须将个人设置存储到主目录. 我的设置采用键/值对的形式,将存储为文件名/内容: for example:~/my-github-app ├── github-account ├── github-token 我目前添加键/值的解决方案: rea
关于我的应用程序:
我正在用bash脚本编写一个小应用程序.应用程序必须将个人设置存储到主目录. 我的设置采用键/值对的形式,将存储为文件名/内容: for example: ~/my-github-app ├── github-account ├── github-token 我目前添加键/值的解决方案: read KEY read VALUE # FIXME! should check for for valid filename. # user can do injection hack by KEY="../../path/to/yourfile" echo $VALUE > ~/my-github-app/$KEY 验证$KEY最简单,最安全的方法是什么? >内置功能? 我真的需要一个可重用的解决方案,而不仅仅是这个应用程序. 编辑: “validate filename”表示检查字符串的正确文件名格式,由OS接受. >“bob”:良好的文件名格式 解决方法
确保安全的唯一方法是使用白名单.这意味着不是将不良角色列入黑名单,而是允许使用好的角色.黑名单总是会失败的原因是你不能将所有奇怪的人列入黑名单,你总会忘记一些事情.特别是如果你正在使用unicode字符串.
文件名可以包含任何内容.根据维基百科:
这意味着整个bash脚本可能是有效的文件名. 你就是这样做的: # if [[ $key =~ [^a-zA-Z] ]]; then # or this. Whatever makes more sense to you if ! [[ $key =~ ^[a-zA-Z]+$]]; then echo 'Wrong key. Only a-zA-Z characters are allowed' >&2 # write to stderr exit 1 fi (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |