저는 PHP 보안 문제에 초보자입니다. 누군가 내 코드로 보안 문제를보고했지만 세부 사항을 알려주지 않았습니다.Ajax 보안 질문 : JQuery ajax() + PHP scandir() = 보안 문제?
아래 코드는 압축 된 버전입니다. JQuery AJAX 함수를 사용하여 일부 데이터를 PHP scandir() 함수에서 사용하는 서버로 보냅니다.
보안 문제가 있습니까?
HTML 문서
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
</script>
<script>
$.ajax({
type: "POST",
url: "example.php",
cache: false,
data: {
foo: "images",
bar: "something else",
},
success: function(html){
alert(html);
}
});
</script>
PHP 문서
<?php
$foo = filter_var($_POST["foo"], FILTER_SANITIZE_STRING);
$bar = filter_var($_POST["bar"], FILTER_SANITIZE_STRING);
$foo = scandir($foo);
$bar = (explode(",",$bar));
foreach ($foo as $a) {
echo "<img src='$foo/$a'>";
}
?>
당신은 잠재적으로 '갑'라는 악성 값을 게시하여 파일 시스템에있는 모든 파일의 목록을 얻을 수
"foo"값에 "/"또는 URL의 절대 경로가 포함되기를 바랍니다. 이렇게하면 이미지를 어디에서나 얻을 수 있습니다. 예를 들어 foo를 "http://www.somesite.com/directory/directory"와 같게 만들 수 있습니다. 이 작업을 수행 할 수있는 안전한 방법이 있습니까? 그렇지 않다면, 아마도 JavaScript 객체 & php doc에서 foo를 제거하고, 원하는 디렉토리를 getdir 함수에 직접 코딩 할 것을 요구할 것이다. 내 프로그램을 사용하는 페이지마다 별도의 PHP 파일을 만들어야하므로이 문제를 피하고 싶습니다. – edt
"이 방법은 이미지를 어디에서나 얻을 수 있습니다."- 원격 사용자가 컴퓨터의 "아무 데나"파일을 볼 수있는 기능을 제공하고 싶지는 않습니다. 이미지 파일 만있는 경우. 파일에 이미지 확장명 (예 : "jpg")이 있기 때문에 이미지 데이터가 포함되어있는 것은 아닙니다. 악의적 인 공격자가 다른 취약점을 통해 코드를 남길 수 있습니다. 디자인과 요구 사항에 대해 다시 생각해 보시기 바랍니다. – Cheekysoft