2012-04-01 4 views
0
function filter($p){ 
    $i=0; 
    return str_replace("<","&lt;",str_replace(">","&gt;",str_replace("&","&amp;",$p,$i),$i),$i); 
} 

아무 생각없이이 xss 예방을 통과합니까? 그냥 숙제가 아니라 내 아이디어이 필터를 통한 XSS 공격?

+1

왜 htmlspecialchars()를 사용하지 않으시겠습니까? –

+0

코더가 멍청한데, 그가 htmlspecialchar()을 알지 못한다고 가정하십시오. D 나는 어떻게 공격해야하는지 알고 싶습니다. D – n0b0dybk

+3

Offtopic -이 사이트는 코드를 검토하지 않습니다. 이것이 바로 http://codereview.stackexchange.com/입니다. 그러나 일반적으로 자신의 "보안"코드를 사용하지 마십시오. 전문가가 아니라면 코드가 누설 될 수있는 가장자리가 하나 이상있을 수 있습니다. –

답변

2

에라타 질문에서 제기 된 바와 같이 여기서 문제는 PHP에서 htmlspecialchars에 대한 자신 만의 대체물을 롤업하려고하는 것입니다. 잠재적 인 취약점을 수정하기위한 스팟 코드 리뷰를 요청했지만 실제로 취약점을 처리하는 방법과 관련하여 애플리케이션에 디자인 악취가 있음을 나타냅니다.

시도하려는 것처럼 반복적 인 픽스 업이나 입력 모드의 위생 처리를 수행 할 수 있지만 (this answer about black- and white-lists 참고) this documentation on how to address and mitigate XSS exploitsthis additional documentation을 읽는 것이 좋습니다. 코드에서 여러 픽스 업을 통해 완화 전략을 수행하는 대신 이러한 위협을 명확하고 안전하게 처리하기 위해 응용 프로그램을 검토하고 다시 설계하는 방법에 대한 지침을 제공해야합니다.

(Additional helpful resource) 응용 프로그램과 행운을 빕니다

!

0

블랙리스트를 사용하지 마십시오. 항상 허용 된 사이트 목록을 사용하십시오. Read for example here에는 다양한 공격이 많이 있습니다. 생각을 자극하는 :)

1

가능합니다. 예를 들어, filter 경우 다음과 같이 내에서 HTML 태그를 을 사용 :

<input type="text" value="<?=filter($p)?>"> 

같은 존재로 $p를 강요하여 XSS 공격을 실행할 수있는 공격자 :

something" onfocus="javascript:alert('test') 

그래서 출력 HTML을 다음과 같이됩니다 :

<input type="text" value="something" onfocus="javascript:alert('test')"> 
관련 문제