2011-06-15 5 views
5

, 나는 형태의 오류가 펄 더러운 모드 오류의 원인 ... 더러운 모드에서 펄 CGI 스크립트를 실행하는 경우

Insecure dependency in some_function while running with -T switch at (eval some_line) line some_other_line. 
Compilation failed in require at my-script.cgi line 39. 
BEGIN failed--compilation aborted at my-script.cgi line 39. 

내-script.cgi 라인 (39)이 사용하는 문은 찾기 그 자체로 eval이나 some_function을 사용하지 않는 펄 모듈은 아마 다른 라이브러리를 사용할 것입니다. some_line과 some_other_line 행 번호는 my-script.cgi 또는 my-script.cgi의 39 행에있는 'use'd 라이브러리 중 하나에서 의미가없는 것처럼 보입니다.

이 오류가 발생하면 어떻게 오염 오류가 발생하고 있는지 추적 할 수 있습니까?

내가 즉

$SIG{ __DIE__ } = sub { require Carp; Carp::confess(@_); }; 

스택 추적을 인쇄해야 새로운 다이 신호 처리기를 설정 시도했다 그러나이 오류에 영향을주지 않습니다 보인다. 아마도 이것은 트래핑 (trapping)되는 신호이거나, 일찌감치 일어나지 않는 신호이거나, 더 복잡한 것이 필요합니다.

+3

내가 CGI.pm에서이 문제를 내가로 실행중인 특정 문제의 근본 원인 이었다는 것을 발견하기에 충분한 문제를 좁힐 관리 주위에 천천히 다이 문을 이동하여 -에 http : // www.nntp.perl.org/group/perl.perl5.porters/2008/01/msg133691.html 저는 이런 종류의 문제를 추적하는 일반적인 방법에 여전히 관심이 많습니다. –

+1

그리고 이것이 사람들이 * CGI를 사용해야하는 이유입니다 (CGI를 사용하는 것은 '스스로하는 것'과 반대되는 개념입니다). 버그는 수천 명의 사용자 (사용자)의 스트레스 테스트를 통해 발견,보고 및 수정됩니다. 문제를 찾는 데 너무 좋습니다. – DavidO

답변

2

요즘에는 디버그 용으로 Devel::SimpleTrace을 많이 사용하며 최근에 Archive :: Zip을 사용할 때 taint 버그를 찾는데 도움이되었습니다.

그러나 본질적으로 사용했던 것과 동일한 시그널 핸들러를 설정하고 있기 때문에 귀하의 경우에 효과가 있었는지 나는 알 수 없습니다.

+0

그래, 내가 두려워하는 출력에 영향을 미치지 않는 것 같습니다. 생각해 줘서 고마워. –

4

Carp::Always은 오염 확인으로 발생한 예외와 잘 일치합니다. 예 출력 :

$ perl -MCarp::Always -T blah.pl 
Insecure dependency in sprintf while running with -T switch at blah.pl line 6 
     main::foo() called at blah.pl line 8 
     main::bar() called at blah.pl line 10 
+0

멋진 계획처럼 보이지만 작동시키지 못했습니다. CGI에 대한 perl 호출에'-I the_carp_always_install_location -MCarp :: Always'를 추가하면 아무 효과가없는 것처럼 보였습니다. 아마도 그것은 당신이 보여준대로 명령 행에서 바로 올바르게 동작 할 것이지만 파일 파일 업로드를 POST함으로써 오류가 발생하고 있기 때문에 명령 행에서 시뮬레이션하는 방법을 알아 내야 할 것입니다. –

+0

http://p3rl.org/CGI#DEBUGGING – daxim

+0

보기에 편리하지만, 파일을 업로드하는 방법을 알려주지 않는 것이 아니라면 정상적인 POST 매개 변수 (내가 알지 못하는 어떤 방법이없는 한) 실제로는 파일 업로드 인 POST 매개 변수를 보내야합니다. 이 스레드가 나에게 길을 좀 가져다 줄 것 같은데 - http://www.perlmonks.org/?node_id=667813 –

관련 문제