2011-08-30 5 views
2

특정 페이지를 통해 액세스 할 수있는 ajaxRequest.open에서 사용하는 PHP 파일을 어떻게 제한합니까?ajax에서 원격 양식 게시를 방지하는 방법은 무엇입니까?

나는이 방법으로 사용자 이름에 대한 많은 추측 된 암호를 확인할 수 있기 때문에 원격 양식 게시를 방지하기 위해 세션과 같은 것을 사용하려고합니다.

리퍼러를 확인하는 것이 안전한 생각이 아닙니다. IP를 기반으로하는 자동 차단은 안전한 것입니까?

Ajax를 통해 게시되는지 여부를 확인하고 아무도 Ajax를 통해 원격 게시 할 수 없으므로 거부하지 않는 것이 좋습니까? 정말 안전합니까?

미리 감사드립니다.

+0

"원격 양식 게시"를 정의하십시오. 누군가 암호로 브루 트 포스를 시도하는 브라우저에서 귀하의 사이트를 통과합니까? – NullUserException

+0

누군가 올바른 사용자 이름과 암호를 사용하려고 시도하고 있습니다. 그는 PHP 파일을 직접 게시 할 수 있기 때문에 그가 작성한 응용 프로그램으로 쉽게 할 수 있습니다. – Drust

답변

1

당신은 물건을 혼합하고 있습니다. AJAX는 HTTP 프로토콜 (예 : POST, GET)을 사용합니다. 따라서 AJAX를 사용하면 이 아닌 사람이 쿼리를 위조하는 것을 막을 수 있습니다. HTTP_X_REQUESTED_WITH이라는 헤더가 있지만 클라이언트에서 오는 과 비슷한 내용이 있으니 신뢰해서는 안됩니다.

원격 AJAX 게시에 대한 우려는 Cross-site remote forgery, or CSRF이라는 악용과 관련이 있습니다. 이를 방지하는 한 가지 방법은 CSRF 토큰을 사용하는 것입니다 (wiki 페이지 읽기). 당신이 묘사하는 문제는 다른 것입니다.

로그인 처리

, 나는 다른 오류 임계 값을 구현하고자 :

  • 당신이 X 시간을 계정에 로그인 실패 시도하는 경우는, 당신은 보안 문자와 함께 맞이합니다. 이렇게하면 합법적 인 사용자를 (너무 많은) 불편을 겪지 않고도 사람들이 봇을 사용하여 암호를 무시할 수 없게됩니다.

  • X + Y 번 실패한 경우 Z 시간 동안 계정이 잠 깁니다.

  • IP에서 많은 로그인 실패가 발생하면 차단됩니다.

+0

내 아약스 애플리케이션을 사용하지 않을 때 누군가 X 시간 동안 로그인하려고 시도한다는 것을 어떻게 알 수 있습니까? 그는 직접 내 PHP 파일에 게시하고 있습니다. IP로 그를 알아볼 수 있다면 믿을만한가요? – Drust

+0

@Drust 당신은 그렇게 할 수 있습니다, 또는 특정 계정이 액세스되고있는 시간을 계산하려고 시도 할 수 있습니다. – NullUserException

관련 문제