나는 2 개의 인자를 가진 open() 명령어가 3 개의 인자를 가진 open() 명령어가 주사 가능하지 않은 반면에 injection에 취약하다는 것을 읽었다. perl open() 주입 방지
은 내 모든 파일을 "파일 -"공통 접두사, 즉이 디렉토리가 있다고 그래서 예를 들어 파일 이름은 어떻게open(FILEHANDLE, "some/random/dir/file-" . $fileextension)
같은 취약 것 파일 SomeSourceCode.txt
될 것인가?
여기서 $fileextension
은 말의 '파일 이름'일 수 있습니다. 내가 아는 한, 이것은 서버에 명령을 실행할 | shutdown -r |
과 같은 파일 이름에 취약하지 않습니다.
파일 이름 인수가 리터럴 문자열로 시작하면 취약하지 않을 수 있습니다 (큰 금액이 부과되지는 않지만). 실제 취약점은 인수가 변수 이름이고 명령 줄 인수에서 검사하지 않고 도출 된 경우입니다. 어쨌든 3 인자 버전의'open'을 사용하지 않을 이유가 없습니다. 업데이트 할 수없는 일부 오래된 코드의 안전성에 대해 걱정하십니까? –
위험 대비 오버 헤드의 문제입니다. 위험합니다. 이 위험은 3 인자'open'에 의해 완전히 제거됩니다. 처음부터이 위험을 감당할 필요가 없을 때 왜이 위험을 완화하려고합니까? – Sobrique
Perl 마스터하기의 많은 보안 프로그래밍 기술 장에서 이러한 종류의 것들을 보여줍니다. –