모든 _POST 데이터를 반복하여 메일 헤더 삽입을 방지하려고하지만 변수가 유효성 검사를 통과하지 못합니다. 슬래시를 포함하는 몇 가지 "날짜"필드가 있고 일부 필드가 비어있을 수 있습니다. 그것이 그 일과 관련이 있는지 확실하지 않습니다. 누구든지 내 논리로 문제를 볼 수 있습니까? "실패"메시지가 계속 나타납니다. 감사.PHP 간단한 헤더 주입 방지
if(isset($_POST['submit'])) {
$boolValidateOK = 1;
function safe($name) {
return(str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), "", $name));
}
foreach($_POST as $value){
if(!safe($value)){
$boolValidateOK = 0;
}else{
$boolValidateOK = 1;
}
}
if($boolValidateOK == 1){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$to...etc
$subject...etc
$message...etc
mail($to, $subject, $message, $headers);
$success_message = "win";
}else{
$error_message = "fail";
}
}
이것은 쓸모없고 잠재적으로 해로운 보안 "개선"처럼 보입니다. 사용자가 메일 헤더를 직접 지정할 수 있도록 허용하지 않는 한 잠재적 인 정육점 사용자 입력 이외에는 아무 것도 할 필요가 없습니다. – NullUserException
프로그래밍 초보자입니다. 어떻게 설명 할 수 있니? 그렇다면 헤더 삽입을 방지하는 방법은 무엇입니까? – user1738750
음, 나머지 코드는 어디에 있습니까 (예 :'etc'로 대체 한 것들)? 당신이해야 할 일처럼 들리지 않습니다. – NullUserException