shell指令碼輸入引數檢驗

2021-09-16 12:32:46 字數 1670 閱讀 2020

防止命令拼接注入等問題。

本來想做黑名單校驗,比如說不能包含分號,&&,||等符號。

考慮到沒有白名單安全,故使用白名單進行檢驗。

校驗規則:

只允許使用

數字大小寫字母

點號和冒號(ipv4和ipv6)

斜桿「/」空格

指令碼:

para=$*

echo "$para" | grep -q -e '^[ 0-9a-za-z./:]*$'

result=$?

if [ "$result" -ne 0 ]

then

echo "parameter error!"

exit 1

fi

測試過程:

root@debian2:~/test# sh test.sh hahah kdsjflkd

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1

root@debian2:~/test#

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888

root@debian2:~/test#

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 ";"

parameter error!

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "/var/log/"

root@debian2:~/test#

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "#"

parameter error!

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "&&"

parameter error!

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "||"

parameter error!

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "|"

parameter error!

root@debian2:~/test# sh test.sh hahah kdsjflkd 192.168.0.103 ::1 fe80::a00:27ff:fe99:7888 "#"

parameter error!

root@debian2:~/test#

引數檢驗與非引數檢驗

引數檢驗 parameter test 全稱引數假設檢驗,是指對引數平均值 方差進行的統計檢驗。引數檢驗是推斷統計的重要組成部分。當總體分布已知 如總體為正態分佈 根據樣本資料對總體分布的統計引數進行推斷。非引數檢驗 nonparametric tests 是統計分析方法的重要組成部分,它與引數檢驗...

IPv6引數檢驗

判斷輸入字串是否為空或者全部都是空格 function isnull str 檢查ipv6位址 正規表示式 function checkipv6 str return str.match g length 7 test str da f da f i.test str da f da f i.tes...

Python KS檢驗以及其餘非引數檢驗的實現

4 其餘的非引數檢驗 5 參考 定義 檢驗乙個分布f x 與理論分布g x 比如正態分佈 是否一致,或兩個觀測值分布是否有顯著差異的檢驗方法 根據定義,ks檢驗可以分為兩大類 對應的原假設和備擇假設分別為 第一種 h0 指定數列服從特定分布 h1 指定數列不服從特定分布 第二種 h0 兩個數列分布一...