전자 메일을 통해 사용자가 제공 한 입력을 받아들이는 웹 사이트에서 PHP 스크립트를 실행하고 있습니다. 태그와 슬래시를 제거하여 입력 데이터를 살균합니다. 그러나이 입력을 사용하여 데이터베이스에 데이터를 입력하거나 include, exec 또는 eval 등을 수행하지 않습니다. 이러한 위험한 일을하지 않는다면 악의적 인 사용자가 GET, POST 또는 COOKIES 배열을 통해 실행 가능한 PHP 코드를 주입 할 수 있습니까? 나는 대답이 "아니오"라는 것이 거의 긍정적이지만, 경험이 많은 사람들에게 물어볼 가치가 있다고 생각했습니다. http://phpsense.com/php/php-mail.html 참고 : 당신이 이메일의 본문에 데이터 만 제공되는 사용자를 사용하는 경우, 다음 당신이 그것으로부터 안전합니다 :)PHP 코드 삽입
답변
잘 각하, 난 당신이 Email Injection
방지하는 방법을 소개 할 수있다 . 하지만 내 추천은 입니다. NEVER trust 사용자 입력 데이터입니다.
SQL 문에서 입력을 사용하지 않고 파일에 쓰지 않거나 eval 또는 exec를 사용하지 않거나 포함하지 않을 경우 실행 가능한 PHP 코드를 삽입 할 수 없습니다.
소스를 보지 않고는 아무도 확실히 말할 수 없지만 아마. 코드 실행은 일반적으로 eval
을 사용할 때 발생합니다. 또한 사용자가 수정할 수있는 문자열의 경로에서 include 또는 require를 사용하는지 확인하십시오.
아, 그리고 아마도 당신에게 http://www.securephpwiki.com/index.php/Email_Injection
바로 그. 입력 한 내용을 직접 보내면 걱정할 필요가 없습니다. 1. 데이터를 데이터베이스에 입력 할 때만 주사가 발생할 수 있습니다. 그럼 너 괜찮을거야. 이메일 제공 업체는 적합하다고 판단되는 이메일을 처리합니다. html을 보내지 않거나 나쁜 단어 필터링과 같은 추가 처리를 원하지 않는 한, 입력을 필터링하거나 제거 할 필요가 없습니다. 2. 사용자 입력을 사용하여 파일을 포함하려고 할 때만 파일 통과가 발생합니다. 3. 사용자에게 데이터를 반향 출력 할 때 XSS 그러나 전자 메일이 제공되었는지 확인하십시오. 그렇지 않으면 적절히 처리해야합니다. – frostymarvelous
에 영향을 미칠 것입니다 헤더 주입이 그 위험을 생산 조건의 관점에서이 문제를 생각하고 오히려 관계없이 상황의 예방 조치를 수행 할 정말 좋습니다.
그러나 일반적으로 사용자가 제출 한 데이터는 서버의 어느 위치에도 저장되지 않고 웹 응용 프로그램 자체에서 활용되므로 요청이 끝나면 가비지 수집됩니다 (예를 들어, 이메일로 보낸 다음 GCed). 그러나 전체적으로 주사하는 것은 매우 큰 문제이며 광범위한 사고로 생각하지 않는 것이 가장 좋습니다. 물론 사용자가 PHP를 삽입 할 수는 없지만 웹 응용 프로그램에 주석을 게시하는 단순한 보안되지 않은 텍스트 영역조차도 클라이언트 측 XSS를 열 수 있습니다. 연습을 시작하는 것이 좋습니다.
가능한 한 일반적으로 sanitize하십시오. 또한 XSS 필터링을 위해 HTMLPurifier을 언급해야합니다. 양식을 사용하여 메일을 보내고 있기 때문에 자동 송신을 방지하기 위해 입력란에 보안 문자를 배치해야합니다. 메일 명령에 PHPMailer을 제안해도됩니까?
내가 생각할 수있는 유일한 것은 register_globals을 켜는 것이고 이것은 매우 위험 할 것입니다. 예를 들어
만약 당신이 가지고에 등록 전역과 함께 다음 URL : 그렇지는 단지 이메일 주입하면, 대한 훌륭한을 볼 것var_dump($_SESSION); // = 0
: 그것은 PHP가 세션 전역을 덮어 원인이 http://mysite/page/php?_SESSION=0
링크 @amosrivera
당신은 이미 많은 것들을 돌보고 있습니다. 하지만 코드 삽입과 관련된 경험을 공유하고 싶습니다. 몇 달 전, 내 웹 사이트의 index.php 파일에 이상한 코드 줄이 있음을 발견했습니다. 그때 나는 그 줄들을 그냥 지웠다. 그러나 그들은 일주일 정도 후에 다시왔다.그런 다음 많은 연구를 한 후 내 FTP 응용 프로그램에서 내 FTP ID/암호를 해킹 한 것은 내 컴퓨터의 악성 프로그램 때문이었습니다. 그것은 index.php의 코드를 변경하고있었습니다. 그 후 내 컴퓨터에 OS를 재설치하고 문제가 해결되었습니다. 이것이 코드 삽입의 한 가지 가능성이 될 수 있습니다.
헤더를 삽입하고 있지만 서버에서 PHP 코드를 실행할 수 없습니다. – Cyclone
누군가가 스팸에 대한 양식을 탐색 한 다음 서버가 블랙리스트에 올 경우 해당 서버에서 오는 전자 메일은 스팸으로 표시되고 문제가 발생합니다. 취약점은 어디 에나 있습니다. – amosrivera
와우 - 너들 공이있다. 나는 이미 단 10 분 만에 6 개의 답을 얻었다. :) "이메일 주사"링크에 대해 고마워. 전에는 들어 보지 못했습니다. 나는 그것을 조사 할 것이다. – Ben