2011-08-30 4 views
0

가능한 중복 :
How to authenticate AJAX call?아약스 PHP는 보안 문제

나는 아약스를 통해 사용자의 사용자 이름과 비밀번호를 확인하는 페이지 ajax_check_user_pass 있습니다.

이 페이지의 아약스 코드는 사용자 이름과 암호를 PHP 파일 php_check.php에 올립니다. php_check.php은 데이터베이스에서 일치시킬 사용자 이름과 암호를 확인합니다.

php_check.php가받는 사용자 이름과 암호가 ajax_check_user_pass이고 어떻게 누군가에 의해 가짜가 아닌지 확신 할 수 있습니까?

세션을 사용했지만 작동하지 않습니다. 또한, 리퍼러를 확인하는 것이 신뢰할 수 없다는 것을 알고 있습니다.

미리 감사드립니다.

+3

정말 중요한가요? bruteforcing에 대해 걱정이된다면 x 시도 후에 자동 차단 메커니즘을 구현하십시오. – Rijk

+1

사용자 입력입니다. 어떻게 위조 될 수 있니? 어떤 공격을 방어하려고합니까? – Quentin

답변

4

실제로 누가 사용자 이름과 암호를 보내고 있는지 알지 못합니다.이 정보를 입력해야한다는 사실은 게시 된 정보를 위생적으로 다루는 한 자신이 누군지 모른다는 증거입니다 , 당신이 원하는 방식으로 정확하게 작동해야합니다.

많은 사이트가 최대 시도 횟수를 구현하지만 실제로는 귀하에게 달려 있습니다.

+0

그의 질문은 "사람"이 아니라 요청의 출처를 확인하는 방법이었습니다. – thwd

+0

"who"* 원산지 * 요청자의 신원. – jondavidjohn

+0

> "php_check.php가받는 사용자 이름과 암호가 ajax_check_user_pass에서 온 것임을 어떻게 확신 할 수 있습니까?" – thwd

0

이러한 종류의 공격을 CSRF이라고하며, 세션 또는 쿠키에 저장된 챌린지 토큰을 양식이나 아약스 호출이있을 때마다 귀하의 사이트에서 확인하고 더 이상 수행하기 전에 유효한지 확인하여이를 피할 수 있습니다 조작.

이 읽기 ​​:

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

또한 먼저 어떤이 토큰 매 X 분 또는 Y의 페이지 뷰를 다시 생성해야합니다.

+2

공개적으로 로그인 폼에 대한 CSRF 보호가 다소 의미없는 것 같습니다. – jondavidjohn