2017-01-01 10 views
1

전자 메일을 보내려는 PHPMailer를 사용하고 있습니다.PHP의 전자 메일 제목 및 본문 필터링/위생 처리

이제 사용자 입력을 항상 확인해야합니다.
하지만 이메일의 제목과 본문은 어떻습니까? (그래서 나는 emailadress를 의미하지 않는다)

위생 처리가 필요한 것은 무엇이며 어떻게해야합니까? (주요) 취약점은 무엇입니까?

HTMLPurifier와 같은 것을 사용해야합니까? 왜냐하면 나는 사용자가 전자 메일을 마크 업할 수 있기를 원하기 때문입니다. 아니면 사용할 수있는 BB 코드 기능을 사용/작성해야합니까?

업데이트 : 메일 본문에 대한

:
내가 지금 ENT_QUOTES 플래그와 함께 반드시 htmlspecialchars를 사용합니다. 이 작업이 끝나면 메시지 위에 BB 코드 (jBBCode) 파서를 실행합니다. 이젠 안전 해 보인다.

주제 :
유효성 검사/위생 처리 등을 사용하지 않습니다. (exept min 및 max strlen)을 입력하십시오. 일부 자바 스크립트로 테스트했지만 괜찮아 보입니다.

지금은 안전하다고 생각합니까? (시 코드는 이메일보다 다른 곳에서는 인쇄되지 않습니다.)

답변

0

당신은 또한 RAW와 같은

<?php 
filter_var($body, FILTER_SANITIZE_RAW, FILTER_FLAG_ENCODE_HIGH) 

사용할 수있는 특수 문자에 대해 보호하기 위해

<?php 
filter_var($body, FILTER_SANITIZE_FULL_SPECIAL_CHARS) 

을 사용할 수 있습니다 전체 세부 정보는 여기에서 찾을 수 있습니다. ->https://secure.php.net/manual/en/function.filter-var.php

+0

이렇게하면 작업이 안전 해지지 만 마크 업을 사용할 수 없습니다. – Synchro

2

예. 보내기 전에 사용자 입력을 정리해야합니다. HTMLPurifier와 HTMLawed는 적절한 위생 처리 작업을 수행하지만 유용한 정보를 차단하지 않도록 조정해야합니다. 둘 다주의해서 잘못합니다. BBCode 또는 markdown은 복잡한 레이아웃을 수행 할 필요가없는 한 필터링하기가 훨씬 쉽습니다.

+0

업데이트 된 질문을 다시 한 번 살펴보고 나에게 의견을주십시오. 나는 약간의 정보를 갱신 할 것이다. –