2011. 4. 8. 17:09
[서버관련]
사용자 업로드폴더(웹에서접근가능)나 업로드폴더가 아닌 일반 이미지폴더에
<? phpinfo() ?> 로 저장후 test.jpg를 올리게 되면
nginx는 uri 뒤에 확장자만 .php면 넘기게 되어 있기때문에 보안에 주의해야합니다.
위의 경로로 test.jpg가 구동되는것을 방지하려면,
이렇게 구성해주면 됩니다.
통상적인 프레임워크를 쓰기위한 rewite 가 아래와 같이 구성되어 있으면
nginx 쓰면서 가장 보안에 주의해야할 부분입니다.
<? phpinfo() ?> 로 저장후 test.jpg를 올리게 되면
nginx는 uri 뒤에 확장자만 .php면 넘기게 되어 있기때문에 보안에 주의해야합니다.
ex) http://abc.com/images/test.jpg/xxx.php
위의 경로로 test.jpg가 구동되는것을 방지하려면,
try_files $uri $uri/ /index.php;
if (!-f $request_filename) { return 403; }
혹은
if (!-e $request_filename) { rewrite ^.*$ /index.php last; }
if (!-f $request_filename) { return 403; }
혹은
if (!-e $request_filename) { rewrite ^.*$ /index.php last; }
이렇게 구성해주면 됩니다.
통상적인 프레임워크를 쓰기위한 rewite 가 아래와 같이 구성되어 있으면
if ($request_filename ~* ".*\.(php)$") {
rewrite ^.*$ /index.php last;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
상관없겠네요..rewrite ^.*$ /index.php last;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
nginx 쓰면서 가장 보안에 주의해야할 부분입니다.