2017-12-01 2 views
1

Es scheint viele pinax-Apps zu geben, die mit ajax arbeiten und ein bestimmtes URL-Muster für diese pinax-App verwenden.Wie sicher sind Ajax basierte Pinax Apps von Bots (Mass Voting, Mass Rating)?

Zum Beispiel gibt es die Bewertungen App. Es benutzt Ajax.

Normalerweise würden Sie auf die Seite, auf der sich das Produkt befindet, zugreifen. Sie müssten CSRF-Token von dort abrufen. Daher müsste der Benutzer oder ein Bot die Seite besuchen, um das Produkt zu bewerten.

Also alle Sicherheits-Mixins funktionieren.

Allerdings verwendet Pinax eine URL wie site.com/ratings. Woher kommt dieses Rating-Formular? Wenn es nur von der Produktseite abgerufen werden kann, ist es sicher, da wir Sicherheitsmaßnahmen auf der Seite anwenden können.

Wie auch immer, wenn der CSRF von der sites.com/ratings stammt, könnte ein Bot alle Sicherheits-Mixins auf der Produktseite umgehen und direkt die Upvote oder Downvote oder die Produkte bewerten.

Erhält es die CSRF von site.com/ratings oder die Produkt-oder Ansichtsseite, in der das Widget eingebettet ist.

Gleiches gilt für Likes und ähnliche Apps.

TL; DR:

1) Kann jemand einen Bot zu Massenrate oder Abstimmung Pinax Apps wie Bewertungen erstellen, die durch den Besuch der Pinax, ohne auch nur zu besuchen, um ein Produkt oder Post oder Modellansicht und funktioniert einfach apps so URL Umgehung alle Sicherheitsmaßnahmen als Mixin auf die Produktseite gelegt?

2) Sind irgendwelche Sicherheitsmaßnahmen in der template tag, so dass die Bewertungen Ajax funktioniert nur in der Seite, in der die template tag ist eingebettet?

Antwort

1

Im Idealfall verwendet der Website-Entwickler Middleware, um alle seine Ansichten zu schützen.

Zum Beispiel sind alle unsere Starterprojekte Schiff mit dem CsrfViewMiddleware eingeschaltet:

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

Damit nimmt Sie benötigen entlang der CSRF-Token mit Ajax-Anforderung, um die post Handler übergeben von Die Ansichten in Pinax Ajax Ansichten funktionieren.

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

und

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

In Ihrer JS-Pipeline: Um dies zu tun, sollten Sie etwas ähnliches. Dies basiert auf der Django Documentation.

+0

Bitte antworten Sie: Sollte ein Bot die Seite mit dem Template-Tag des Bewertungs-Widgets aufrufen müssen, um das CSRF-Token zu erhalten oder kann ein Bot das CSRF-Token direkt von 'site.com/rating' beziehen. Ich frage dies cos, wenn eine Sicherheitsmaßnahme oder Mixin oder IP-Verbot oder rateslimiting auf die Ansicht mit dem Produkt mit Rating-Vorlage angewendet wurde würde es nicht auf die Bewertungen App im späteren Fall gelten würde. – Kotlinboy

+0

Ich spreche nicht über ratenbegrenzende Middleware. Nur im Blick (vielleicht als Mixin). – Kotlinboy

+0

i.e; kann ich einen Bot erstellen, der nur die pinax Bewertungen App url bewertet, wenn er die PK kennt, zum Beispiel 'site.com/rating'. Dieser Bot kann keine andere URL auf der Website aufrufen. – Kotlinboy