Trädvy Permalänk
Medlem
Plats
Kungälv
Registrerad
Dec 2007

PHP Frågor

Tjenare. Det är så att jag vill att min hemsida ska vara så säker som möjligt så jag tänkte höra med er vad man kan vidta för åtgärder.

Saker som $_GET, $_POST, $_SESSION osv.

Sen så har jag en liten fråga till. När man ska lista upp all info från databasen för att den ska vara så säker som möjligt samt innehålla radbrytning med mer, krävs då följande kod som står nedan, eller är det möjligt att göra på nått annat sätt? "Säkrare sätt".

Citat:

$text = htmlentities($text);
$text = nl2br($text);

Chieftec Mesh ♣ Gigabyte DS4 ♣ q6600 (3,2 GHz) ♣ OCZ Reaper 2x2GB PC2-8500 ♣ 8800GT 512mb (740/1850/1060 MHz) ♣ Corsair 650W ♣ Raptor 150 GB ♣ 3Dmark06: 14341

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Jun 2005

Du får helt enkelt se till att rensa bort möjligheten att lägga in PHP, JavaScript och annan skadlig kod i din ut och in data.

Regel nummer ett är att aldrig lita på INDATA ifrån användare eller applikationen i övrigt.
Ha alltid funktioner som rensar din data ifrån skadligheter.

ta en titt på funktioner som:

strip_tags()

Sedan finns en hel del bra guider på en sida jag är långvarig användare av för just PHP programmering.

http://www.talkphp.com

Mvh, BlueEyes

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jan 2009

Om du använder $_GET, $_POST i en databasfråga ska du escapa tecknen för att skydda dig mot sql-injections" finns olika funktioner beroende på vilken databas/php class du använder.

PDO http://se.php.net/manual/en/pdo.quote.php
Mysql http://se.php.net/manual/en/function.mysql-escape-string.php
Mysqli http://se.php.net/manual/en/mysqli.real-escape-string.php

Pentium E5200, 4x2048MB DDR2 667mhz, ATI RADEON HD4670 512MB.
AMD 4850E, 4x2048 DDR2 667Mhz. ATI RADEON HD3200.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2002
Citat:

Ursprungligen inskrivet av petabyte.se
Om du använder $_GET, $_POST i en databasfråga ska du escapa tecknen för att skydda dig mot sql-injections" finns olika funktioner beroende på vilken databas/php class du använder.

PDO http://se.php.net/manual/en/pdo.quote.php
Mysql http://se.php.net/manual/en/function.mysql-escape-string.php
Mysqli http://se.php.net/manual/en/mysqli.real-escape-string.php

Om man ändå väljer att använda PDO eller Mysqli (vilket jag rekommenderar) så bör man köra på parametriserade frågor istället.

Om man tänker en tanke, så är den tanken inte den tanke man tror att man tänker. Utan det är den tanke som får en att tro att man tror den tanke man tror att man tänker.

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jan 2009
Citat:

Ursprungligen inskrivet av Prizephitah
Om man ändå väljer att använda PDO eller Mysqli (vilket jag rekommenderar) så bör man köra på parametriserade frågor istället.

Nu hängde jag inte riktigt med, parametriserade? tänker du på prepare statement funktionerna?
http://php.oregonstate.edu/manual/en/mysqli.prepare.php

Förövrigt rekommenderade inte du PDO sist? jag har för mig att det var du som fick mig att titta lite på det ?:)

Pentium E5200, 4x2048MB DDR2 667mhz, ATI RADEON HD4670 512MB.
AMD 4850E, 4x2048 DDR2 667Mhz. ATI RADEON HD3200.

Trädvy Permalänk
Medlem
Plats
Lycksele
Registrerad
Feb 2009

jo, säkert det
för det ökar säkerheten betydligt
eftersom dom functioner kan filtrera och 'escapa' med
bland annat desa tecken: " eller '

Det är en av fördelarna med PDO database.
Tar ett tag att lära sej syntaxen .. sen sätter dewt sej i ryggmärgen.
.... som att ta körkort och börja köra bil:
i början måste man tänka på varje sak man gör ..
sedan går allting på räls .. utan att man tänker
... till man frontalkrockar därför att man inte var alert och på spänn ... asom en nybörjare på trafikskolan

ASUS P8Z77-V DELUXE, Core i7 3770K@4.2GHz, Noctua NH-U12P SE2, Corsair 8GB 1600MHz, Gigabyte GTX 650Ti 2GB,
Samsung Pro 840 256GB, 1TB WD Green, be Quiet! E9 680W Modulär, Fractal Define R4

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2002
Citat:

Ursprungligen inskrivet av petabyte.se
Nu hängde jag inte riktigt med, parametriserade? tänker du på prepare statement funktionerna?
http://php.oregonstate.edu/manual/en/mysqli.prepare.php

Förövrigt rekommenderade inte du PDO sist? jag har för mig att det var du som fick mig att titta lite på det ?:)

Precis!
Var nog lite luddig där. Menade att jag rekomenderar att man använder sig utav PDO eller Mysqli. PDO är smidigt då det stödjer fler databaser än MySQL.

Jag syftade även på prepared statements. (Klipp från Wikipedia)

$db = new PDO('pgsql:dbname=database'); $stmt = $db->prepare("SELECT priv FROM testUsers WHERE username=:username AND password=:password"); $stmt->bindParam(':username', $user); $stmt->bindParam(':password', $pass); $stmt->execute();

Om man tänker en tanke, så är den tanken inte den tanke man tror att man tänker. Utan det är den tanke som får en att tro att man tror den tanke man tror att man tänker.