2011-03-09 1 views
2

전자 메일을 통해 사용자가 제공 한 입력을 받아들이는 웹 사이트에서 PHP 스크립트를 실행하고 있습니다. 태그와 슬래시를 제거하여 입력 데이터를 살균합니다. 그러나이 입력을 사용하여 데이터베이스에 데이터를 입력하거나 include, exec 또는 eval 등을 수행하지 않습니다. 이러한 위험한 일을하지 않는다면 악의적 인 사용자가 GET, POST 또는 COOKIES 배열을 통해 실행 가능한 PHP 코드를 주입 ​​할 수 있습니까? 나는 대답이 "아니오"라는 것이 거의 긍정적이지만, 경험이 많은 사람들에게 물어볼 가치가 있다고 생각했습니다. http://phpsense.com/php/php-mail.html 참고 : 당신이 이메일의 본문에 데이터 만 제공되는 사용자를 사용하는 경우, 다음 당신이 그것으로부터 안전합니다 :)PHP 코드 삽입

답변

1

잘 각하, 난 당신이 Email Injection

방지하는 방법을 소개 할 수있다 . 하지만 내 추천은 입니다. NEVER trust 사용자 입력 데이터입니다.

+0

헤더를 삽입하고 있지만 서버에서 PHP 코드를 실행할 수 없습니다. – Cyclone

+0

누군가가 스팸에 대한 양식을 탐색 한 다음 서버가 블랙리스트에 올 경우 해당 서버에서 오는 전자 메일은 스팸으로 표시되고 문제가 발생합니다. 취약점은 어디 에나 있습니다. – amosrivera

+0

와우 - 너들 공이있다. 나는 이미 단 10 분 만에 6 개의 답을 얻었다. :) "이메일 주사"링크에 대해 고마워. 전에는 들어 보지 못했습니다. 나는 그것을 조사 할 것이다. – Ben

1

SQL 문에서 입력을 사용하지 않고 파일에 쓰지 않거나 eval 또는 exec를 사용하지 않거나 포함하지 않을 경우 실행 가능한 PHP 코드를 삽입 할 수 없습니다.

1

소스를 보지 않고는 아무도 확실히 말할 수 없지만 아마. 코드 실행은 일반적으로 eval을 사용할 때 발생합니다. 또한 사용자가 수정할 수있는 문자열의 경로에서 include 또는 require를 사용하는지 확인하십시오.

아, 그리고 아마도 당신에게 http://www.securephpwiki.com/index.php/Email_Injection

+0

바로 그. 입력 한 내용을 직접 보내면 걱정할 필요가 없습니다. 1. 데이터를 데이터베이스에 입력 할 때만 주사가 발생할 수 있습니다. 그럼 너 괜찮을거야. 이메일 제공 업체는 적합하다고 판단되는 이메일을 처리합니다. html을 보내지 않거나 나쁜 단어 필터링과 같은 추가 처리를 원하지 않는 한, 입력을 필터링하거나 제거 할 필요가 없습니다. 2. 사용자 입력을 사용하여 파일을 포함하려고 할 때만 파일 통과가 발생합니다. 3. 사용자에게 데이터를 반향 출력 할 때 XSS 그러나 전자 메일이 제공되었는지 확인하십시오. 그렇지 않으면 적절히 처리해야합니다. – frostymarvelous

0

에 영향을 미칠 것입니다 헤더 주입이 그 위험을 생산 조건의 관점에서이 문제를 생각하고 오히려 관계없이 상황의 예방 조치를 수행 할 정말 좋습니다.

그러나 일반적으로 사용자가 제출 한 데이터는 서버의 어느 위치에도 저장되지 않고 웹 응용 프로그램 자체에서 활용되므로 요청이 끝나면 가비지 수집됩니다 (예를 들어, 이메일로 보낸 다음 GCed). 그러나 전체적으로 주사하는 것은 매우 큰 문제이며 광범위한 사고로 생각하지 않는 것이 가장 좋습니다. 물론 사용자가 PHP를 삽입 할 수는 없지만 웹 응용 프로그램에 주석을 게시하는 단순한 보안되지 않은 텍스트 영역조차도 클라이언트 측 XSS를 열 수 있습니다. 연습을 시작하는 것이 좋습니다.

가능한 한 일반적으로 sanitize하십시오. 또한 XSS 필터링을 위해 HTMLPurifier을 언급해야합니다. 양식을 사용하여 메일을 보내고 있기 때문에 자동 송신을 방지하기 위해 입력란에 보안 문자를 배치해야합니다. 메일 명령에 PHPMailer을 제안해도됩니까?

1

내가 생각할 수있는 유일한 것은 register_globals을 켜는 것이고 이것은 매우 위험 할 것입니다. 예를 들어

만약 당신이 가지고에 등록 전역과 함께 다음 URL : 그렇지는 단지 이메일 주입하면, 대한 훌륭한을 볼 것

var_dump($_SESSION); // = 0 

: 그것은 PHP가 세션 전역을 덮어 원인이 http://mysite/page/php?_SESSION=0 링크 @amosrivera

1

당신은 이미 많은 것들을 돌보고 있습니다. 하지만 코드 삽입과 관련된 경험을 공유하고 싶습니다. 몇 달 전, 내 웹 사이트의 index.php 파일에 이상한 코드 줄이 있음을 발견했습니다. 그때 나는 그 줄들을 그냥 지웠다. 그러나 그들은 일주일 정도 후에 다시왔다.그런 다음 많은 연구를 한 후 내 FTP 응용 프로그램에서 내 FTP ID/암호를 해킹 한 것은 내 컴퓨터의 악성 프로그램 때문이었습니다. 그것은 index.php의 코드를 변경하고있었습니다. 그 후 내 컴퓨터에 OS를 재설치하고 문제가 해결되었습니다. 이것이 코드 삽입의 한 가지 가능성이 될 수 있습니다.