filter_var
은 데이터 필터링에 적합합니까? 어떤 종류의 불량 데이터를 필터링합니까? mysql_real_escape_string
을 사용하지만 filter_var
을 추가하면 도움이 될지 궁금합니다.filter_var는 좋은 방법입니까?
답변
가능하면 준비된 문을 사용하십시오. 그렇지 않다면, 문자열에 대해 mysql_real_escape_string을 사용하고, float에 대해서는 (int) casting 또는 intval()을, float에는 float (float) 또는 floatval()을, LIKE 문에서 사용할 문자열에 대해서는 addcslashes ($ input, '% _')를 사용하십시오. RLIKE 문에서 사용할 문자열을 이스케이프 처리 할 때 상황이 더욱 복잡해집니다.
$escaped = htmlspecialchars($input, ENT_QUOTES, $your_charset);
A :이 경우에 가장 저렴한 솔루션이며, 원하는
는 필터링 HTML 콘텐츠의 경우, 최고 ($ allowable_tags를 거치지 않고) strip_tags 것,하지만 ... 당신은/좋아하지 않을 수 있습니다 더 신뢰할 수있는 솔루션은 같은 라이브러리를 사용하는 것입니다 HTML Purifier
필터 기능은 정상이지만 필터 중 일부는 필터보다 더 유효합니다. 귀하의 필요에 따라 그 중 일부가 유용 할 수 있습니다.
htmlspecialchars()는 텍스트를 HTML로 출력하기위한 올바른 작업입니다. 텍스트에서 합법적 인 '<'문자를 사용하려는 경우 strip_tags()가 내용을 잃어 버리고 '&'가 제대로 표시되지 않습니다. – bobince
정말로 당신이하려는 일에 달려 있습니다. 구체적인 사항을 알지 못하면 실제로 대답 할 수 없습니다. 가능한 필터와 그 효과는 다음과 같습니다. Types of filters
기본적으로 사용자 입력에서 오는 xss 또는 mysql 공격을 필터링하고 유효성을 검사합니다. – mikelbring
XSS 및 SQL 주입 방법이 너무 많습니다 (http://ha.ckers.org/xss.html). 그것은 모두 사용자 데이터를 어떻게 처리했는지 응용 프로그램에 따라 다릅니다. – Gumbo
filter_var
을 FILTER_*
constants과 함께 사용하여 조정합니다. validation (데이터 확인은 안전함)이 아닌 sanitisation 개의 데이터 (실제 데이터를 안전하게 만들기 위해 * 조정)를 찾고있는 것 같습니다.
서로 다른 필터가 서로 다른 작업에 도움이 될 수 있습니다. mysql_real_escape_string
은 SQL 인젝션을 방지하기 위해 데이터를 위생 처리하는 것으로 괜찮지 만 HTML을 포함 할 수있는 데이터를 출력하는 것은 좋지 않습니다. - (제거하지 않음) HTML 코드를 표시 XSS 공격을 방지하고 HTML 엔티티로 문자 변환에 유용
FILTER_SANITIZE_SPECIAL_CHARS
: 여기가 일상적인 작업을 위해 사용하는 거라고 필터의 몇입니다.FILTER_SANITIZE_STRING
및STRIP_LOW/HIGH
플래그 - 실제로는 HTML을 제거합니다 (strip_tags
참조).FILTER_SANITIZE_URL
- URL을 안전하게 만듭니다 *.FILTER_SANITIZE_EMAIL
- 주소를 저장하기 전에 유효 사촌을 사용하는 것이 좋지만 전자 메일 주소를 안전하게합니다.
* 저는 안전함을 느슨하게 사용합니다. 나는 결코 확신 할 수 없다고 생각합니다.
그냥 약간의 테스트를 토대로, filter_var
의 상수는 신뢰할 수 없다는 결론을 얻었습니다. 예를 들어
는 :
filter_var('[email protected]', FILTER_VALIDATE_EMAIL); // valid
filter_var('http://.', FILTER_VALIDATE_URL); // valid
filter_var('[email protected]', FILTER_SANITIZE_EMAIL); // [email protected]
filter_var('http://.', FILTER_SANITIZE_URL); // http://.
이 분명히 잘못된 값이지만, filter_var
의 상수를 전달합니다. filter_var
을 신뢰하지 마십시오.
살균은 유효성 검사와 동일하지 않습니다. –
@Mathew, 맞습니다.하지만 필자가 지적한'filter_var '의 문제와 관련이 있는지 확신 할 수 없습니다. 내가 입력 한 내용을 정확하게 필터링하거나 제대로 살균하지 않습니다. – eyelidlessness
http://tools.ietf.org/html/rfc822에서 볼 수있는 한 전자 메일 주소가 올바르게 형식화되어 있습니다. 특히, 'c'는 새로운 TLD로 등록되고, 'b-'는 도메인으로 등록됩니다 ('-'는 유효한 문자입니다). 거기에는 아무런 문제가 없습니다. '! def! xyz % abc + tag @ [127.0.0.1]'은 유효한 주소가 아닙니까? (나는 궁금해 할 것이다.) 도메인 네임의 예제를 빨리 올리지는 못했지만, 'dig.'가 합리적인 응답을 주었다고 말할 수는 있지만,'stackoverflow.com.' 'stackoverflow.com'과 같은 ip를 반환합니다 (예, 첫 번째 URL의 후행 점). 나는 이것에서'filter_var'와 PHP에 동의한다. – Iiridayn
모두 유효한 URL 또는 유효한 이메일의 의미에 따라 다릅니다.
예를 들어 [email protected]
- 글쎄 최상위 도메인을 필터링하여 .c
을 제외 할 수 있지만 최상위 도메인 목록이 일정하지 않습니다. 또한 모든 문자가 유효합니다. 이상하게 보이고 거의 확실하게 유효하지 않더라도, 많은 정규식 필터가 유효성을 검사합니다.
이메일로 [email protected]
또는 링크으로 표시되거나 링크로 사용되는 경우 아무데도 가지 않아도 아무런 해를 끼치 지 않습니다.
저는 문제의 일부가 필터가 얼마나 느슨한 지에 대한 질문이라고 생각합니다. 큰 관심이 XSS 또는 SQL 주입이거나 그렇지 않으면 위험한 입력을 방지하는 경우 값이 사용 가능한지 여부는 관계가 없으므로 이러한 종류의 필터가 트릭을 수행 할 수 있습니다.
값이 안전하고 사용 가능하다는 것을 확인하려면 더 까다로운 짐승입니다.
- 1. UIViewController를 변경하는 좋은 방법입니까?
- 2. 이렇게하는 것이 가장 좋은 방법입니까?
- 3. 이것은 hcf를 찾는 좋은 방법입니까?
- 4. 태그를 사용하는 것이 좋은 방법입니까?
- 5. 어느 것이 가장 좋은 방법입니까?
- 6. 객체를 총체적으로 deserialize하는 좋은 방법입니까?
- 7. dll을 사용하는 좋은 방법입니까? (? C++)
- 8. PropertyChanged 이벤트 테스트 : 좋은 방법입니까?
- 9. 모달 대화 상자는 웹에서 좋은 방법입니까?
- 10. SQLAlchemy/SQLObject를 사용하지 않는 것이 좋은 방법입니까?
- 11. 파이썬과 파이 게임은 SDL을 배우는 좋은 방법입니까?
- 12. 스레드 안전 큐가 좋은 접근 방법입니까?
- 13. 일반용 고유 속성을 처리하는 좋은 방법입니까?
- 14. 익명 함수는 명령 패턴을 구현하는 좋은 방법입니까?
- 15. 비동기 프로그래밍 모델을 구현하는 좋은 방법입니까?
- 16. C#의 BinaryFormatter는 파일을 읽는 좋은 방법입니까?
- 17. DragDrop 논리를 컨트롤에서 제외시키는 좋은 방법입니까?
- 18. 루프가 테이블을 만드는 가장 좋은 방법입니까?
- 19. 'SQL 사전'이이 문제를 해결하는 가장 좋은 방법입니까?
- 20. 뷰에서 요청 처리/데이터베이스 액세스가 좋은 방법입니까?
- 21. 배치 SQL 삽입은 MySQL 최적화에 좋은 방법입니까?
- 22. 일시적으로 현재 스레드의 culture를 변경하는 좋은 방법입니까?
- 23. 사용자 상태를 업데이트하는 가장 좋은 방법입니까?
- 24. asp.net webforms - 상태를 지속시키는 좋은 방법입니까?
- 25. 임의 문자 문자열을 생성하는 좋은 방법입니까?
- 26. 경로를 동적으로 찾는 것이 더 좋은 방법입니까?
- 27. 문자열 헥스를 바이트로 변환하는 가장 좋은 방법입니까?
- 28. 이것은 방법을 재사용/공유하는 좋은 방법입니까?
- 29. 부분 실행을 통해 재귀를 수행하는 것이 가장 좋은 방법입니까?
- 30. JQuery 플러그인에서 CSS와 JavaScript 로직을 분리하는 것이 가장 좋은 방법입니까?
이것이 왜 왜곡되었는지 확실하지 않음 – Ross
XSS 및 SQL 주입이 무엇인지 이해하고 기적 기능을 요구하지 않고 가능한 이유를 이해해야합니다. – Gumbo
무엇을 도와 드릴까요? filter_var가 성취하기를 바라는 것을 당신은 무엇을하려고합니까? 질문이 실제로 모호하기 때문에 – jmucchiello