2017-12-01 5 views
1

pinax 앱에 대한 특정 url 패턴을 사용하는 아약스와 함께 작동하는 많은 pinax 앱이있는 것 같습니다.봇 (Mass voting, Mass rating)의 아약스 기반 Pinax 앱은 얼마나 안전한가요?

예를 들어 등급 앱이 있습니다. 그것은 아약스를 사용합니다.

일반적으로 제품이있는 페이지에 아약스가 있습니다. 거기에서 CSRF 토큰을 가져와야합니다. 따라서 사용자 또는 봇은 실제로 제품을 평가하기 위해 페이지를 방문해야합니다.

모든 보안 믹스가 작동합니다.

그러나 pinax는 site.com/ratings과 같은 URL을 사용합니다. 이 등급표는 CSRF를 어디서 얻었습니까? 제품 페이지에서만 가져올 수있는 경우 보안이 적용되므로 페이지에 보안 조치를 적용 할 수 있습니다.

CSRF가 sites.com/ratings에서 가져온 경우 로봇은 제품 페이지의 모든 보안 믹스를 쉽게 우회하여 제품을 직접 upvote 또는 downvote하거나 평가할 수 있습니다.

site.com/ratings 또는 위젯이 포함 된 제품 또는보기 페이지에서 CSRF를 가져옵니다.

같은 기능은 좋아요 및 유사한 앱에 사용됩니다.

TL; DR :

1) 사람이 바로 pinax를 방문하여도 제품 또는 게시하거나 모델 뷰를 방문하지 않고도 작동 및 등급 등의 대량 속도 또는 투표 pinax 애플 리케이션에 로봇을 만들 수는 URL 따라서 우회 애플 리케이션 모든 보안 조치가 제품 페이지에 혼합되어 있습니까?

2) template tag이 포함 된 페이지에서만 등급 ajax가 작동하도록 보안 조치가 template tag에 있습니까?

답변

1

사이트 개발자는 모든보기를 보호하기 위해 미들웨어를 사용하는 것이 가장 이상적입니다.

https://github.com/pinax/pinax-starter-projects/blob/account/project_name/settings.py#L111

그래서의 post 핸들러 위해 귀하의 아약스 요청과 함께 CSRF 토큰을 따라 통과 필요로 이동 :

는 예를 들어, CsrfViewMiddleware와 모든 스타터 프로젝트 우주선 켜져 Pinax ajax의 견해가 효과가 있습니다. 당신의 JS 파이프 라인에서

https://github.com/pinax/pinax-starter-projects/blob/account/static/src/js/ajax.js

https://github.com/pinax/pinax-starter-projects/blob/account/static/src/js/index.js#L14

이렇게하려면, 당신은 같은 것을 포함해야한다. 이는 Django Documentation을 기반으로합니다.

+0

답변하십시오 : 봇이 CSRF 토큰을 얻기 위해 평가 위젯의 템플릿 태그가있는 페이지를 방문해야하거나 bot이 CSRF 토큰을'site.com/ratings'에서 직접 가져올 수 있습니까? 보안 템플릿이나 믹스 인 또는 IP 금지 또는 평가가있는 경우 등급 템플릿이 포함 된보기에 적용됩니다. 등급 템플릿을 사용하는 경우 등급 앱에 적용되지 않습니다. – Kotlinboy

+0

저는 미들웨어 속도 제한에 대해 말하는 것이 아닙니다. 보기에서 (mixin으로). – Kotlinboy

+0

i.이자형; PK를 안다면 PINax 등급 앱의 url을 보면서 등급을 매기는 봇을 만들 수 있습니까 (예 : site.com/ratings'). 이 봇은 사이트의 다른 URL을 방문 할 수 없습니다. – Kotlinboy