Einzelnen Beitrag anzeigen
  #7  
Alt 18.11.2003, 22:41:45
Benutzerbild von Matt
Matt Matt ist offline
Member
 
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
ACHTUNG!! FEHLERALARM!

STOP
RIESEN FEHLER UND GEWALTIGES SICHERHEITSLOCH!

Mit eurem script lösche ich alle Datenbank einträge in 6 zeilen:

[start] -> Hoch -> Hoch [enter]
cmd [enter]
telnet <deine seite> [enter]
GET <DEIN SCRIPT> HTTP/1.1[enter]
[enter]
auswahl[]=*[enter]


Ich bin nicht sicher, ob Post variablen genau so übergeben werden, jedenfalls könnt ihr euch vorstellen, wie leicht es ist, hier ALLE datensätze zu löschen?
Und selbst wenn es nicht alle sind - ich könnte hier einen Datensatz angeben, den ich nicht löschen darf - und er würde gelöscht werden!

Dies funktioniert nur wie folgt:_

beispielsweise ihr habt eine tabelle, die wie folgt aussieht:

Code:
|Table news
+-----------
|NEWS_ID [PK] 
|writer_id 
|content
nun ist es zuerst mal wichtig, festzustellen, welche IDs überhaupt bearbeitet werden dürfen, und nur diese zu registrieren. Das funktioniert am besten, wenn ihr den NAMEN der Checkbox beeinflusst:

also: <input type="checkbox" name="chk_$id" value="set">

im script fragt ihr zuerst ab, welche beiräge der autor geschrieben hat (dazu müsst ihr wissen, wer der author ist - dieser muss sich irgendwie registriert haben - beispielsweise über eine laufende session)

Code:
$res=mysql_query("select NEWS_ID from news where writer_id='$currentwriter'");
dannach überprüft ihr, welche news von allen seinen erstellten angekreuzt sind:

Code:
$deletes=array();
while(list($resid)=mysql_fetch_row($res))
{
if(!empty($_POST["chk_".$resid]))
{
$deletes[]=$resid;
}
}
nun habt ihr in dem array $deleteres alle IDs der news einträge, die der angegebene Autor verfasst hat und löschen will (sprich, wo in der checkbox irgend ein wert mitgegeben wurde - sie also aktiviert war!)
Alles andere führt zu fehleranfälligkeit.
Mit Zitat antworten