2011-01-31 4 views
0

iam은 사이트에서 내 PHP 페이지 중 하나에 요청을 보내기 위해 아약스를 사용하지만 ... 내 html 페이지에서이 작업을 수행합니다. 이것은 안전합니다 ....ajax 요청을 원격으로 보내는 보안 문제가 있습니까?

다른 사람들이 내 PHP 페이지를 알고 스크립트에서 해당 페이지로 아약스 요청을 보내면 어떻게 될까요? 이로 인해 보안 문제가 발생할 수 있습니다.

어떻게 피할 수 있습니까?

+1

공격자가 무엇을 할까 두려워합니까? – SLaks

+0

그는 내 소스 코드를 볼 수 있을지 모르기 때문에 아약스 요청을 보내는 곳과 그 페이지로 전달되는 매개 변수를 알 수 있습니다. 이제 GET 또는 POST를 통해 내 페이지에 매개 변수를 전달하고 INSERT, UPDATE, DELETE와 같은 잘못된 연산을 수행 할 수 있습니다. –

답변

3

당신은 CSRF attacks을 방어하려고합니다.

페이지에 nonce를 포함시킨 다음 모든 AJAX 요청에 해당 nonce가 있어야합니다.
공격자가 다른 도메인에 있기 때문에, 그는 넌스를 얻을 방법이 없습니다.

+0

그는 CSRF에 관해 알고 있습니까? 또는 그가 PHP 수신기에 가짜 데이터를 보내는 봇에 대해 이야기 할 수 있습니까? +1하지만 – RobertPitt

+0

@ 로버트 : 확실하지 않습니다. 나는 그에게 명확히 해달라고 부탁했다. – SLaks

+0

+1, 봇 문제는 실제로이 문제도 해결할 수 있습니다. 앱이 javascript에서 최종 nonce를 생성하도록 만들면 자바 스크립트를 구문 분석하지 않으므로 대부분의 봇은이를 처리 할 수 ​​없습니다. 그러나 이것은 당연히 우회 될 수 있기 때문에 독자적으로 사용해서는 안되며 특정 응용 프로그램에서 사용하는 것이 좋습니다. –

1

페이지에 AJAX 요청을 보낼 수있는 유일한 방법은 동일한 도메인에있는 경우 (즉, 해당 스크립트가 도메인에서 호스팅되어야하는 경우)입니다.

AJAX는 교차 도메인에서 작동하지 않으므로 매우 안전합니다.

+0

그렇지만 대부분의 다른 언어는 다음과 같이 할 수 있습니다 :/ – RobertPitt

+0

글쎄, 나는 단지'file_get_contents ("http : //his.url")'을 할 수 있었지만 나는 이것이 AJAX 질문이라고 생각했다. – xil3

+0

php (http://php.net/manual/fr/function.file-get-contents.php)를 사용하여 다른 서버의 페이지를 쉽게 요청할 수 있습니다. 그런 다음 리버스 엔지니어링을 조금 해보면 각 url 매개 변수에 어떤 유형의 데이터가 있는지 알 수 있습니다. 이렇게하면 PHP 페이지에서 제공 할 수있는 모든 것을 가져올 수 있습니다. (나는 단지 결함/악용을 지적하고있다. 그런 종류의 vunerability를 피하기 위해 아약스를하는 올바른 방법을 모른다.) –

1

이 작업을 막을 수있는 방법은 거의 없으며,이를 방지하는 데 도움이되는 유일한 방법은 올바른 응용 프로그램 아키텍처를 사용하는 것입니다.

  • 시도를하고 읽기 전용하기 위해 Ajax를 아래로 유지 :

    예를 들어, 다음과 같은 규칙이 도움이 될 것입니다. 당신이이 규칙을 따라야합니다 다음 쓰기 Ajax를 사용하는 경우

    • 만의 예상대로 정확하게 확인,
    • 유효성 검증 & 귀하의 게시물 데이터의 유효성을 검사 로그인 한 사용자가 데이터를 전송할 수 있도록 허용 그것은
    • 은 사용자가 로그인하면 아카 (Nonce)
    • 등, 검증 기간이 거기 있는지 확인 모든 페이지에 대한 모든 형태의 고유 한 해시를 생성하는 형태의 해시 기술을 구현하고, 세션 내에서 변수에 대해 검증 "30 초를 기다려야합니다. 게시하기 전에 onds ".
    • 항상 이러한 연구 할 때, 당신은 다른 사이트 소유자하지만 당신이해야 사용하는 다른 기술을 통해 올 것이다 당신이 session_start

다음은 당신의 방법에 당신을 얻을해야합니다 몇 가지 포인터 호출하기 전에 session_regenerate_id()를 사용 항상 다음 2 가지 규칙을 기억하십시오.

  • 당신이
  • 화이트리스트를하고 블랙리스트에 결코처럼 행동, 사용자를 신뢰하지 마십시오.