현재 서버의 로그 분석 스크립트에서 작업 중이며 사용자가 악의적 인 명령을 입력하지 못하게하려면 영숫자 문자를 제외한 모든 문자를 필터링해야합니다 입력 된 문자열에서 밑줄을 허용하면서) 불행히도이 작업을 수행하는 방법을 모르기 때문에이 작업을 수행하기 위해 수행 할 작업을 누군가에게 알려줄 수 있는지 궁금한 점이 많습니다. 감사합니다. 또한 예를 들어 누군가 다음과 같이 입력한다고 가정 해 봅시다 : stack # @ _ over % flow, 프로그램은 stack_overflow를 생성하기 위해 영숫자가 아닌 문자 (밑줄 제외)를 필터링합니다. bash에서 이에 해당하는 값은어떻게 문자를 필터링하여 영숫자 문자 만 허용 할 수 있습니까?
입니다. "!" "! -bash :"A는 문자열에 포함 된 경우tr -dc [:alnum:]'_'
또한, 내가 얻을 나는 다음을 시도 언급,하지만 여전히 예를 들어 (일부 문제가 발생하는 것을 잊었다 이벤트는 "
를 찾을 수 없음#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
프로그램을 호출 할 때 bash에서 오류가 발생한다면 (isalnum을 사용할 수 있다는 점만 제외하면 괜찮아 보인다.), 프로그램 인수를 작은 따옴표로 묶으십시오. –