WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mysql radera rad (https://www.wn.se/forum/showthread.php?t=36963)

Hoel 2009-05-22 15:22

Citat:

Ursprungligen postat av Jonas
Citat:

Originally posted by -Hoel@May 22 2009, 00:35
Jonas är säkert dalai lama på sin planet
Okej, det låter ju rimligt. Problemen uppstår ju när systemet använts i ett par månader. ID kommer då att börja vid runt 10 000. Föreställer mig att det kommer bli onödigt stora tal...



Måste försvara mig lite här nu.
1. Tanken från min sida var att se hur godtrogen du var. Allt för många ger ut uppgifter utan att veta exakt vem dom har att göra med. Det hela har ett begrepp http://en.wikipedia.org/wiki/Social_engineering_(security)
2. Jag skulle inte ens gått in på länken om du gett mig den, utan snarare postat här i tråden om att jag fick den av dig. Eftersom så som du har gjort det är livsfarligt.


Menade inget illa med dalai lama, smileyn föll bort :)
Är bekant med Social Engineering, och du verkar vara en alldeles för respekterad medlem här för att
trixa med min databas :)

Citat:

Ursprungligen postat av tartareandesire
1. Undvik att använda något annat än en explicit url i action-attributet.
2. Skicka bara med id-numret. Nu har du en sql-sats där som vem som helst kan manipulera på klientsidan för att på så vis radera hela databasen eller vissa id:n om man tycker det är roligare.

Exempel på hur satsen skulle kunna se ut ?

allstars 2009-05-22 17:57

gör om värdet som läggs in i hidden så du endast lägger Idt.

På sidan som du postar till skapar du en variabel vid namn $sql1 (eller likn) och i slutet av variabeln lägg till värdet från postade hiddenfältet som du gör en escape på för att ta bort "förbjudna" tecken.

tartareandesire 2009-05-22 18:01

Citat:

Originally posted by allstars@May 22 2009, 17:57
gör om värdet som läggs in i hidden så du endast lägger Idt.
På sidan som du postar till skapar du en variabel vid namn sql1 (eller likn) och i slutet av variabeln lägg till värdet från postade hiddenfältet som du gör en escape på för att ta bort förbjudna tecken.

escape = mysql_real_escape_string

allstars 2009-05-22 18:14

ja, precis, Tack!

Jonas 2009-05-22 23:00

Citat:

Ursprungligen postat av Hoel
Menade inget illa med dalai lama, smileyn föll bort
Är bekant med Social Engineering, och du verkar vara en alldeles för respekterad medlem här för att
trixa med min databas


Säg inte det ;)

Citat:

Ursprungligen postat av Hoel
Exempel på hur satsen skulle kunna se ut ?

Kod:

<?php
$action = (isset($_GET['action'])) ? $_GET['action'] : false;

switch($action)
{
case 'delete':
$id = (isset($_POST['imgID'])) ? $_POST['imgID'] : false;
$id = intval($id);

if($id)
{
$query = sprintf('DELETE image FROM IMAGE WHERE id=%d', $id);
mysql_query($query);
}
break;
}
?>
<form action="?action=delete" method="POST">
<input type="hidden" name="imgID" value="<?php echo (isset($id)) ? $id : ''; ?>" />
<input type="submit" value="Delete Image" />
</form>

Borde vara något som fungerar och är rätt säkert mot SQL injections även.
Använder man inte MySQLi/PDO mm med Prepared statements så bör man använda sprintf för att göra queryn.

Conny Westh 2009-05-23 01:18

Citat:

Originally posted by Alex@May 21 2009, 23:56
Mm, hela fem bytes stora! =)... Det är inga större problem.
Auto_increment lagrar INTE talen som strängar utan som heltal och då går det inte åt mer än optimlat ett "word" (integer eller long) dvs en allokeringsenhet i minnet.

Conny Westh 2009-05-23 01:22

Citat:

Originally posted by WoxAnYv@May 22 2009, 09:02
Du kan ju förvisso köra följande också ifall du vill omsortera dina id:n men jag vidhåller vad andra sagt, strunt i att använda id:t till något annat, vill du ha ett id som löper snyggt framåt på utsidan, mata ut det hjälp av php istället i din loop där utmatningen sker.

Kod:

ALTER TABLE table DROP id, ADD id INT UNSIGNED AUTO_INCREMENT NOT NULL, AUTO_INCREMENT = 1;

Det där funkar enbart om man inte har en enda främmande nyckel som refererar till ID i den tabellen, annars tappar manalla nyclar och refernserna blir helt korrupta, dvs data blir helt oanvändbart.


Alla tider är GMT +2. Klockan är nu 06:07.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson