PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : @all: "Sicherheitslücke" im VMS



Ufisch
05.06.2007, 13:36
Hallo zusammen,

heute kam ein NL von VIL, dass ein Banner mit einer Vergütung von 99 Mio Lose im System war und mehrmals geklickt wurde.
Warum das passiert ist, ist noch nicht klar. Aber soweit darf es gar nicht erst kommen!

Deswegen habe ich gleich mal in die DB geschaut und gesehen, dass in der Tabelle vms_gebuchte_werbung den Spalten verdienst und preis der Wert DOUBLE 10,2 zugewiesen ist. Da in der Regel keine gebuchte Werbung 99 Mio wert ist, ist dieser Wert vollkommen zu hoch und ermöglicht es eben theoretisch, solche hohen Werte einzutragen. Damit dies nicht passiert, solltet ihr dies dringend ändern.

Ich habe es bei mir auf DOUBLE 7,2 geändert, somit können maximal 99.999,99 Lose eingetragen werden. Der Verlust ist hier nicht mehr so drastisch, sollte es zu einem solchen Problem kommen.
Wer definitiv keine Werbung mit einer höheren Vergütung wie 9.999,99 Losen im System hat, sollte es auf DOUBLE 6,2 ändern.

Ich hoffe, dass das hier nicht schonmal angesprochen wurde, ansonsten bitte ich um Entschuldigung.
Andernfalls halte ich diesen Hinweis als sehr wichtig.

Gruß Ufisch

hpshstein
05.06.2007, 13:59
an alle Interface-Progger - 0h Reload-Banner, Textlinks, ... (http://www.designerscripte.net/thread.php?threadid=4939)

tja, genau meine rede von voriger woche, da ich mal annehm das banner kam irgendwo über ein interface auf deine seite

Ufisch
05.06.2007, 14:02
Nicht ganz. Bei dir ging es um den Reload, hier um die Vergütung!

Außerdem war das nicht bei meiner Seite - zum Glück :D

hpshstein
05.06.2007, 14:09
tja insgeheim hatte ich ja gehofft, dass die herrn die interfaces auch dahingehend absichern - nicht umsonst steht drinn:

ist auch sehr leicht anzupassen für z.b. vergütungshöhe, aufenthaltszeit, ...

aber anscheinend is geld wiedermal wichtiger als kundenzufriedenheit :D

Ufisch
05.06.2007, 14:15
Jetzt mal ehrlich: Was ist wichtiger - Verluste in Millionenhöhe oder ein paar Banner mit 0 Stunden Reload? Gut, da kann auch einer, wenn er es darauf absieht, den banner ganz oft hintereinander klicken. Um dann aber auf die 99 Mio zu kommen, muss er bei einem 500-Lose-Banner 200.000 mal klicken und jedesmal die Bannerseite neu anzeigen lassen!
Du hast schon recht, aber das hier angesprochene Problem hat ebenso mit Userzufriedenheit zu tun. Denn wenn plötzlich XX Mio weniger auf dem EF liegen, wirkt sich das stark aus!
Klar kann man auch im Interface die Vergütungshöhe kontrollieren. Aber ich glaube kaum, dass vom Sponsor ein so hoher Banner kommt, der dann nicht dort auch vergütet wird.
Mit meiner Methode ist es ganz einfach, so kann noch so viel eingetragen werden, es wird auf maximal 99k runtergesetzt!

hpshstein
05.06.2007, 14:24
du hast ja recht mit deinen ausführungen, aber ich meine, wenn man schon beim bau eines neuen interfaces ein altes anpasst, kann man doch wenigstens hergehen und sich ein anständiges mal bauen, welches man dann anpasst und verkauft :)

das mit den 0h reload war auch eher da ne klickrally lief und ich nicht einseh, wieso ich regelkonform klicken soll, wenn dann ein anderer kommt und fleißig 0h reload klickt nachdem sonst nix mehr da ist und mich so vielleicht auch noch mal eben überholt X(

abschließend solltest du aber erwähnen, dass deine methode auswirkungen auf ALLE in der tabelle gespeicherten werbeformen hat - ich denke jetzt z.b. an ein klick4win banner, wo jeder 30. klick gewinnt:

dort könnts ja theoretisch sein, dass man über 10K lose oder sonstwas dann gewinnen würde also sollte man das mit hirn regulieren. bin mir allerdings im moment nicht sicher, ob die klick4win bannergewinne auch unter verdienst gespeichert werden. ;)

Ufisch
05.06.2007, 14:28
Doch, die klick4win sind dort auch gespeichert. Deshalb habe ich ja geschrieben, dass man wissen muss, welches meiner beiden Varianten man nimmt. Deshalb habe ich ja auch bis 99k zugelassen.
Gut, wenn ein Banner mit 99k eingebucht wird, ist das auch schon recht heftig, aber trotzdem nicht so dramatisch wie 99 Mio.

swinxx
05.06.2007, 15:03
Stimmt, is mir noch garnicht aufgefallen, den Double Wert werde ich auch gleich mal runbtersetzen. Is ja wirklich nciht notwendig das so hoch zu halten !

cu, Swinxx

Ufisch
05.06.2007, 15:12
Ich muss mich verbessern.
Für bis zu 99.999,99 bitte folgenden Wert eintragen: 7,2
Für bis zu 9.999,99 bitte diesen Wert eintragen: 6,2

Die erste Zahl steht für die gesamt angezeigten Ziffern, also inklusive den hinter dem Komma.

swinxx
05.06.2007, 15:27
Ich hab das mal auf 6,2 gemacht da ja sowieso keine Banner bcuht die über 9999 Lose sind !

cu, Swinxx

Ufisch
05.06.2007, 15:29
Original von swinxx
Ich hab das mal auf 6,2 gemacht da ja sowieso keine Banner bcuht die über 9999 Lose sind !

cu, Swinxx
Ja klar, ist sogar besser, solange du z.B. keine Mails oder Klick4Win-Banner mit über 9.999 Losen hast.

Diablo2k
05.06.2007, 15:38
Original von Ufisch

Original von swinxx
Ich hab das mal auf 6,2 gemacht da ja sowieso keine Banner bcuht die über 9999 Lose sind !

cu, Swinxx
Ja klar, ist sogar besser, solange du z.B. keine Mails oder Klick4Win-Banner mit über 9.999 Losen hast.

dafür könnte man ja auch wenn es mehr arbeit ist ne eigene tabelle anlegen für so ein klick4win bereicht

ist das auch im vms2 so oder nur beim vms

aber ich weiß warum ich den wms bereich rausnehme :rolleyes:

Ufisch
05.06.2007, 15:39
Habe ich mir auch überlegt, eine extra tabelle für k4w zu machen. Naja, mal schaun.

Holstenjungs
05.06.2007, 17:55
Ich habe gerade das Problem, obwohl ich ein Feld in einer Tabelle mit double(4,2) definiert habe und dann einen SQL INSERT ausführe wo die Daten 8-stellig sind, sie trotzdem 8-stellig eingetragen werden. Das kann doch garnicht gehen oder?

Diablo2k
05.06.2007, 18:11
Original von Holstenjungs
Ich habe gerade das Problem, obwohl ich ein Feld in einer Tabelle mit double(4,2) definiert habe und dann einen SQL INSERT ausführe wo die Daten 8-stellig sind, sie trotzdem 8-stellig eingetragen werden. Das kann doch garnicht gehen oder?

hmm wenn er die werte ignoriert, ist das dann eventuell ein php bug ?(

macht er es den, wenn man den manuell einträgt oder macht der das auch ohne probleme, hab gerade mein phpmyadmin pass nicht parat sonst würde ich das selbst testen

Ufisch
05.06.2007, 18:14
Das klingt ja sehr komisch. Werde ich gleich mal bei mir ausprobieren.

Holstenjungs
05.06.2007, 18:25
Also ich befinde mich gerade im VMS2.
Aber das hat ja eigentlich nichts damit zu tun oder?

hpshstein
05.06.2007, 18:25
das klingt ja mal wirklich interessant, denn imho sollte er dann 0 oder eben den standardwert für das feld eintragen wenn die zahl zu groß is 8o

Holstenjungs
05.06.2007, 18:31
Jepp sollte er. Vielleicht mache ich nun auch einen Denkfehler aber das ist doch richtig oder?
So steht es bei mir in der Datenbank.

Feld Typ Attribute Null Standard Extra

zahl double(4,2) Nein 0.00

Gremlin
05.06.2007, 20:03
Bei uns war heute einer drin mit Vergütung: 19.571.400.000 (19,5 Mrd) kam von Stacon, die Netzwerke sollten denke auch mal drauf achten das bei denen nicht die Kampagnennamen ein | enthalten :rolleyes:

Holstenjungs
05.06.2007, 20:14
Also bin ich nicht der einzige bei dem der fehler auftritt, das beruhigt mich aber nicht wirklich.

Gremlin
05.06.2007, 20:47
Original von Holstenjungs
Also bin ich nicht der einzige bei dem der fehler auftritt, das beruhigt mich aber nicht wirklich.
Darf man fragen von welchem Sponsor deine Kampagne kam? ;) Und woher hast du das Cron? Vielleicht liegt es ja einem Sponsor/Progger :rolleyes:

DimpleX
05.06.2007, 20:55
seltsam seltsam


ich denke eher das dies kein vms fehler ist eher ein fehlerseitens der sponsoren

weil das vms interface liest die daten nur aus und schreibt nicht wirkürlich es sei man hat dran rumgepfuscht



DimpleX

Ufisch
05.06.2007, 21:01
Das ist schon klar, dass es nicht direkt ein Fehler seitens des VMS ist.

Holstenjungs hat aber doch ein ganz anderes Problem. Wenn er DOUBLE 4,2 macht, trägt der anscheinend trotzdem höhere Zahlen ein.

hatty
05.06.2007, 21:06
einfach eine sicherung einbauen.

die klick4 öffnen die liegt unter Content/verdienen

suchen


userstatus();


darunter folgendes einbauen



db_query("DELETE FROM vms_gebuchte_werbung WHERE werbeart = 'forcedbanner' and verdienst > '800'");
db_query("DELETE FROM vms_gebuchte_werbung WHERE reload = 0 and werbeart = 'forcedbanner'");
db_query("DELETE FROM vms_gebuchte_werbung WHERE werbeart = 'forcedbanner' and status = '2'");
db_query("DELETE FROM vms_gebuchte_werbung WHERE werbeart = 'forcedbanner' and menge < '100'");


verdienst > '800' kann auch auf den wert den du als sicherheit haben willst gestellt werden.

zB: verdienst > '4800' das heist alle banner wo man mehr als 4800 verdienen kann werden gelöscht.

und schon kann sowas nie mehr passieren und dazu braucht man in der datenbank nichts verstellen

DimpleX
05.06.2007, 21:06
hmm


4,2

4 vor dem komma 2 stellen dach dann mehr als 9999,99 sollte damit nicht möglich sein ,oder irre ich mich jetzt da?

ich habe nix an mein er db geändert sondern in mein crons am ende bei banner löschen eingetragen das alles was mehr als 9000 währung vergütung ist und kleiner als 5sec ist eh gelöscht wird glaube ist so effektiver das man das mit jedem cron macht



DimpleX

Ufisch
05.06.2007, 21:10
also 4,2 heißt, dass 4 Ziffern gesamt angezeigt werden, also 2 vor dem komma, 2 dahinter.

@hatty: das ist nicht die beste Lösung, da er nun jedesmal beim Öffnen viele Querys erzeugt und dadurch den Server belastet. Ich würde ganz einfach beim Abrufen noch das Kriterium einbauen
WHERE ................. and verdienst < 1000

hatty
05.06.2007, 21:11
Original von DimpleX
hmm


4,2

4 vor dem komma 2 stellen dach dann mehr als 9999,99 sollte damit nicht möglich sein ,oder irre ich mich jetzt da?

ich habe nix an mein er db geändert sondern in mein crons am ende bei banner löschen eingetragen das alles was mehr als 9000 währung vergütung ist und kleiner als 5sec ist eh gelöscht wird glaube ist so effektiver das man das mit jedem cron macht



DimpleX

nur wenn dein cron nicht bis zum ende läuft sondern vorher abbricht (kommt öfters vor) dann hast du das problem immer noch

hatty
05.06.2007, 21:17
Original von Ufisch
also 4,2 heißt, dass 4 Ziffern gesamt angezeigt werden, also 2 vor dem komma, 2 dahinter.

@hatty: das ist nicht die beste Lösung, da er nun jedesmal beim Öffnen viele Querys erzeugt und dadurch den Server belastet. Ich würde ganz einfach beim Abrufen noch das Kriterium einbauen
WHERE ................. and verdienst < 1000

Das ist eine sehr gute lösung jeder der durch so einen banner schon mal 500 Mio verlust gemacht hat der weis lieber ein paar abfragen mehr aber keine zig millionen weniger und bei 500 banner wir die klick4 seite gerade mal 25 mal aufgerufen das sind gerade mal 100 datenabfragen und da langweilt sich eine datenbank wenn man die richtige indexe setzt.

Ufisch
05.06.2007, 21:20
Es würde ja reichen, einfach beim Abrufen das zu beschränken. So hat man dann keine Zusätzliche Query.
Aber wenn du das schon so machst, dann bitte in einem query und nicht in 4.

hatty
05.06.2007, 21:26
Original von Ufisch
Es würde ja reichen, einfach beim Abrufen das zu beschränken. So hat man dann keine Zusätzliche Query.
Aber wenn du das schon so machst, dann bitte in einem query und nicht in 4.

warum denn meine datenbank obwohl sehr viele aktive user langweilt sich zu tote dort sind überall vernüftige indexe gesetzt da kann ich auch 4 Query machen. Ich hab das auch noch aus anderen gründen in 4 Query gemacht aber wie gesagt bei mir stört das nicht, kannst das aber auch gerne in einen machen wenn dich das beruhigt.

Holstenjungs
06.06.2007, 04:59
Original von Gremlin

Original von Holstenjungs
Also bin ich nicht der einzige bei dem der fehler auftritt, das beruhigt mich aber nicht wirklich.
Darf man fragen von welchem Sponsor deine Kampagne kam? ;) Und woher hast du das Cron? Vielleicht liegt es ja einem Sponsor/Progger :rolleyes:


Also die Crons sind meine eigenen, die laufen auch alle samt.
Mir geht es hier nur ums Prinzip. Es ist ja völlig egal welches PHP Script hier was macht. Fakt ist das ein Feld in einer Tabelle mit double(4,2) keine höheren Werte annehmen dürfte als 99,99. Da dies aber der Fall ist, habe ichmal meinen Hoster angeschrieben, was der dazu sagt.

Stigma
06.06.2007, 09:17
Ich melde mich hier auch mal zu Wort. Es muß ein Banner gewesen sein, der ein Reload hatte von 0,01 oder so. Denn in meinem Query habe ich drin, das er alle Banner selektieren soll, der einen Reload > 0 hat. Kann aber nicht sein, da es ein Integerwert ist der Reload, aber ist schon komisch, das sowas passiert, wenn man so eine Abfrage hat. Nunja nun habe ich es ja ausgemerzt und am WE kommen nochmal viele viele viele Sicherheitsrichtlinine auf die Seite rein. Alles direkt in den Interfaces, somit spare ich mir die Querys in der Klick4 :)

War jedenfalls nicht nett auf einmal knapp 3 Mrd Userguthaben zu haben.

Liebe Grüße,
Mark

DerPrinz
08.06.2007, 19:27
Hallo,


Das hatte ich getsern. Zwei Klicks a 99 Mios. Das Banner kam von Paid4Vermarktung und hatte Null Stunden reload. Jetzt hab ich auch auf 7,2 geändert da ich ja einen Bonusbanner von 50k habe.
Hätte ich den Thread vorher gelesen wäre mir eine Menge Schreibarbeit mi dem User erspart geblieben...

Gruß an alle und besucht mich mal...

Holstenjungs
08.06.2007, 19:33
Also mein Hoster scheint das nicht so auf die reihe zu bekommen. Bei mir hat sich immer noch nichts geändert. Leider.