2013-05-08 2 views
2

이전에 물어 본 적이 있지만 찾을 수없는 것이 확실하므로 다시 묻습니다.BOT에서 Ajax 통화로 보안을 설정하는 방법은 무엇입니까?

내 사이트에는 사용자 이메일과 임의의 사이트 특정 속성을 저장하는 ajax 호출이 있습니다. 속성이있는 요청 URL은 다음과 같습니다. 이것은 DB 쓰기 요청이며 JSON 응답을 제공합니다.

http://mysite.com/[email protected]&siteattribute=XYZABCDEF 

지금 내가 느끼는 문제는이 코드가 도착하면 어떤 하나/봇이 URL을 알고 있다면 살고, 그것은 수 내 DB에서 정크의 직접 입력을 많이. 그걸 막으려면 어떻게해야합니까? 어떠한 제안? 일부 암호화 메커니즘을 추가해야합니까?

+0

먼저 GET 대신 POST 메서드를 사용할 수 있습니다. robots.txt 파일을 만들어 Google과 같은 로봇을 막을 수 있습니다. –

+0

예. POST는 할 수 있지만 내 문제는 해결할 수 없습니다. robots.txt는 어쨌든 해가없는 좋은 로봇만을 멈추게 할 것입니다. 이것을하기 위해 의도적으로 봇을 작성한 사람을 중지시키는 것을 생각합니다. Robot.txt 도움이되지 않습니다. 로봇이 로봇을 따라 가기를 원한다면 로봇을 최대한 활용할 수 있습니다. –

답변

0

AJAX 집합 “X-Requested-With=XMLHttpRequest” 헤더를 사용하여 서버 측에서 호출하여 ajax 호출 또는 봇을 통해 호출되었는지를 확인할 수 있습니다.

나는 그것이 100 % 멈출 것이지만 기본 손상에 저항 할 것이라고 말하지 않을 것이다.

현재로서는 Mainfilter 클래스에서 내 날씨에 해당하는 사람들이 내 페이지에서만 작성한 BOt 또는 AJAX 호출의 날씨를 확인하고 있습니다.

확실한 해결책을 얻길 바랍니다.

+0

그게 그 일을하는 한 가지 방법이지만, 당신이 완전한 증거 방법이 아니라고 말 했으니 까. db 쓰기로 더 안전한 것을 원하면 특별히 클라우드에서 호스팅 할 때 비용이 많이 드는 작업이된다. –

+0

그래, 그 또한 사실이다. –

+0

JS가하는 것과 같은 방법으로 그의 AJAX를 전송하는 js 스크립트를 작성할 수 있습니다.이 스크립트는 합법적 인 것으로 올 것입니다. – Jono

1

Spring에서 사용하는 스타일을 에뮬레이션 할 수 있습니다 (또는 Spring 사용) - 서버가 페이지를로드 할 때마다 csrf 토큰 형태로 패스 키를 발행합니다. 이 csrf 토큰을 Ajax 요청에 넣고 서버 측에서 유효성을 검사 할 수 있습니다. 저는 파이썬 프로그래머입니다. 따라서 자바 서버에 익숙하지는 않지만, this answer에는 코드 작업에 대한 링크가 포함되어 있습니다. 당신이 봄을 사용하지 않는 경우

편집DeveloperForce은 CSRF 토큰을 구현 2 자바 라이브러리를 나열하고있다. 스프링 MVC는 Java에서 가장 많이 사용되는 MVC 중 하나이기 때문에 자동으로 Spring을 사용합니다.

일반적으로 서버 측 데이터를 변경하는 페이지는 GET 대신 POST 여야합니다. 누군가가 URL을 북마크하거나 브라우저 기록 로그를 보면 GET 데이터가 기록되기 때문입니다. 일반화 뱀과 커피의 대답

+0

나는 봄에 일하고 있지 않다. 나는 그것을 관례대로 만들어야한다. 그러나 이것이 올바른 방향이라고 생각합니다. 이것에 대한 조사를 좀 해봅시다. –

0

:

당신은 는 '자바 스크립트 이내에있는 AJAX 요청에 초기 HTML 요청을 연결해야합니다.

사용자가 수행하는 모든 AJAX 호출과 함께 GUID/ID를 전달하고 유효성을 서버 측에서 확인하여이 작업을 수행 할 수 있습니다.

  • 만큼 백엔드가 백엔드 언어에서 그들을 렌더링하여 HTML 페이지를 제공으로 (ASP/장고의/etc/PHP), 당신은 쉽게 HTML에 GUID와 숨겨진 태그를 포함 할 수 있습니다 서버가 초기 HTML 요청을 수신하고 서버에 GUID를 저장합니다. 서버에 유효한 GUID를했으면 HTML 페이지의 단일 인스턴스 보내는 경우

  • , 당신은, 설정된 시간 후 용도의 설정 번호를 폐기하여 여분의주의 을 수 및/또는 식별 할 수 너무 많은/너무 빠른 AJAX 요청.

도 GUID를 사용하여 즉시 브라우저가이 있기 때문에, 봇/악성 사용자가이를 잡아 유효한 AJAX 요청으로 사용할 수 있다는 것을 기억하십시오.

마찬가지로, 의 핵심 보안 조치는 단일 HTML 요청에 대한 Ajax의 요청을 범위화하고 사용을으로 제한 할 수 있습니다.

"이 페이지의 인스턴스별로이 아약스 요청을 두 번 이상 만들어야합니까?"와 같은 질문을하십시오. - 그렇지 않다면, 서버 측에서 일어날 때 잡으면 악의적 인 것을 알게 될 것입니다.

관련 문제