我目前正在爲服務器開發日誌解析腳本,爲了防止用戶輸入惡意命令,我需要過濾除字母數字字符以外的所有字符(同時允許下劃線),但不幸的是我不知道該怎麼做,所以我只是想知道如果有人能告訴/告訴我該怎麼做才能實現這一點,謝謝!也作爲一個例子,有人說輸入以下內容:stack#@ _ over%flow,然後程序會過濾出非字母數字字符(除了下劃線)以便產生正好的stack_overflow,這在bash中相當於如何過濾字符串,以便只允許字母數字字符通過
tr -dc [:alnum:]'_'
也忘了提,我曾嘗試以下,但仍遇到的一些問題(例如,如果一個包含在字符串中,我得到「!」「-bash:!」:事件未找到」
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char ** argv) {
int i;
char *p;
if (argc > 1) {
for (p = argv[1]; *p != '\0'; p++) {
if (islower(*p) || isdigit(*p) || *p == '_') {
putchar (*p);
}
}
putchar ('\n');
}
return 0;
}
也是我試圖跟隨,但它仍然有一些問題(如上圖所示編輯) – lacrosse1991
如果您收到來自當你打電話給你的程序(這看起來不錯,除了可以使用的字符isalnum)bash的錯誤,然後附上您程序參數用單引號括起來。 –