2011-10-24 4 views
4

내 웹 사이트는 utf-8 (mysql, http 헤더, PHP mb_string 등)을 사용하도록 완전히 변환되었습니다.내 PHP 웹 사이트에서 잘못된 utf8을 필터링하는 것은 무엇입니까?

Im은 일부 침투 테스트를 수행하고 잘못된 utf를 스크립트 중 하나 (BurpSuite 사용)에 POST하려고합니다.

하지만 유효하지 않은 utf를 게시 할 때 $ _POST var를 16 진수로 덤프하는 경우 mb_detect_encoding을 사용하여 유효성을 검사하기 전에 유효하지 않은 utf 시퀀스가 ​​이미 삭제 된 것으로 나타납니다.

나에게 좋은 소식이지만, 어느 레이어가 POST 데이터를 변환하는지 알고 싶습니까?

Content-Type HTTP 헤더의 부작용입니까, 아마도 내 웹 서버가 lighttpd를 수행하고있는 것일 수 있습니다. 또는 PHP 자체에서 $ _POST를 채울 때입니까?

내가 부적절한 utf hexdumped를 볼 것으로 예상되어 나를 위생적으로 만들었습니다.

+0

더 많은 정보가 도움이 될 것입니다, 당신은 프레임 워크에 있습니까? 어떤 PHP 버전을 사용하고 있습니까? 코드 샘플 등을 볼 수 있습니까 –

+0

게시 한 내용과 돌아온 내용을 볼 수 있습니까? – Brad

+1

아니요, 프레임 워크가 없습니다. 그냥 바닐라 PHP와 burpsuite에서 원시 HTTP 요청, 그리고 나서 PHP 스크립트는 단순히 $ _POST [ "formvalue"]를 16 진수로 덤프합니다. $ _REQUEST/$ _ POST 또는 hexdumping하기 전에 코드에 사용자 입력을 사전 처리 할 필요가 없습니다. 예제를 지금 정렬 ... – carpii

답변

1

PHP 자체는 POST 데이터를 필터링하지 않고 항상 이진 데이터로 처리합니다.이 데이터는 항상 "유효합니다"(단지 데이터 일 뿐이며 유효성을 검사하지 않습니다)입니다.

따라서 웹 서버에 데이터를 변경하는 모듈이 있거나 데이터를 필터링하는 PHP 확장이 있다고 의심됩니다.

웹 서버에 웹 방화벽이 설치되어 있고 PHP로로드하는 확장 목록과 입력 필터링 관련 사항이 있는지 확인하십시오.

+0

프레임 워크가없고 웹 방화벽도 없습니다. 분명히 lighttpd는 잘못된 utf8도 필터링하지 않습니다. 꽤 당황 스럽네. 이상한 확장 기능은 없지만, 그 기능을 통해 작업하고 있습니다. 그것을 일으킬 수있는 mbstring 구성 설정을 알고 있습니까? – carpii

+0

mbstring에 기본 인코딩이 있습니다. 그리고 당신은 입력 및/또는 출력에 등록 된 사람들을 가질 수 있습니다. [이 ** 답변의 PHP 설정 ** 및 ** 문자열 ** 섹션] (http://stackoverflow.com/q/6987929/367456#6989048)을 참조하십시오. 역할을하는 몇 가지 ini 설정을 나열했습니다. 실제로 처리하는 데이터를 조사하기 위해 [PHP 문자열의 16 진수 덤프] (http://stackoverflow.com/q/1057572/367456)를 쉽게 찾을 수 있습니다. – hakre

+0

고마워, 결국 php.ini mbstring 설정 ... mbstring.http_input = auto로 인해 발생했다. auto로 설정하면 잘못된 utf가 적절히 sanie에 감염되었다는 인상을주는 charset의 자동 변환을 수행하는 것으로 나타납니다. 나는 더 많은 가능성이 있다고 생각하지만 변환이 실패하고 빈 문자열을 반환했습니다. – carpii

관련 문제