私は現在サーバーのログ解析スクリプトに取り組んでおり、ユーザーが悪意のあるコマンドを入力するのを防ぐために、入力された文字列から英数字を除くすべての文字を除外する必要があります(アンダースコアを許可します)が、残念ながら方法はわかりませんこれを行うために、誰かがこれを達成するために何をすべきかを教えて/見せてくれるかどうか疑問に思っていました、ありがとう!また、例として、誰かが次のように入力したとします:stack#@ _ over%flow、プログラムは、stack_overflowだけを生成するために、英数字以外の文字(アンダースコアを除く)を除外します。これは、bashでこれに相当します。
tr -dc [:alnum:]'_'
また、私が次のことを試したことに言及するのを忘れましたが、それでもいくつかの問題が発生します(たとえば、文字列に「!」が含まれている場合、「-bash:!」:eventnotfound」が表示されます。
#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;
}