webForumDet fria alternativet

Hur säker är min kod ?

PHP

11 svar · 882 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#1

Hur säker är min kod nu när jag har ändrat ?

<?php

$con = @mysql_connect("******","******","********");
if(!$con)
{
die('Databasfel' . mysql_error());
}
mysql_select_db("***********", $con);

$id  = mysql_real_escape_string($_GET['id']);

$resultt = ("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********** WHERE kommentarid='$id'");

if(mysql_num_rows($resultt) == 0)
{
echo "Ingen har kommenterat detta inlägg :(";
}

while($row = mysql_fetch_array($resultt))
if($row['privat'] == 1)
{
echo "<div style=\"background:#FFFFFF; border:1px solid #000000; padding:5px; margin-top:10px;\">";
echo '- Denna kommentar är endast till för Emil Wiklund - ';
echo "</div>";
}
else
{
echo "<div style=\"background:#FFFFFF; border:1px solid #000000; padding:5px; margin-top:10px;\">";
echo "<font size=\"2\">Kommentaren skriven av ".$row['namn']." klockan ".$row['datum']."</font>";
echo "<hr>";
echo $row['kommentar'];
echo "</div>";
}

mysql_close($con);
?>
Medlem sedan aug. 20039 340 inlägg
#2

SQL-koden är nu säkrad. Men det går däremot fortfarande att skriva in HTML-kod i kommentaren, inklusive Javascript-kod. Någon elaking skulle till exempel kunna skicka dig vidare till vad som ser ut att vara en exakt kopia av din sida, men som sparar lösenordet man skriver om man försöker logga in till admin-interfacet.
Du kan lösa detta genom att anropa htmlspecialchars för varje sak som skrivs ut, som en användare har skrivit in.
Både htmlspecialchars($row['kommentar']) och htmlspecialchars($row['namn']) allltså.

(Bra) säkerhet handlar inte om att bara täppa igen hål som man hittar utan att känna till sina programmeringsspråk väl och se till att varje rad man skriver är säker och inte skapar några nya luckor.

Medlem sedan mars 2009512 inlägg
#3

Jag får detta felmeddelade

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\provar.php on line 15

Medlem sedan nov. 2000146 inlägg
#4

Posta gärna koden med som du skrivit den, lite lättare att felsöka då :bire

Medlem sedan mars 2009512 inlägg
#5
<?php
$con = @mysql_connect("**********","*******","*********");
if(!$con)
{
die('Databasfel' . mysql_error());
}
mysql_select_db("**********", $con);

$id  = mysql_real_escape_string($_GET['id']);

$resultt = ("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********* WHERE kommentarid='$id'");

while($row = mysql_fetch_array($resultt))

if($row['privat'] == 1)
{
echo "<div style=\"background:#FFFFFF; border:1px solid #000000; padding:5px; margin-top:10px;\">";
echo '- Denna kommentar är endast till för Emil Wiklund - ';
echo "</div>";
}
else
{
echo "<div style=\"background:#FFFFFF; border:1px solid #000000; padding:5px; margin-top:10px;\">";
echo "<font size=\"2\">Kommentaren skriven av ".$row['namn']." klockan ".$row['datum']."</font>";
echo "<hr>";
echo htmlspecialchars($row['kommentar']);
echo "</div>";
}
mysql_close($con);
?>
Medlem sedan nov. 2000146 inlägg
#6

Skall du inte ha { direkt efter din while?

while($row = mysql_fetch_array($resultt))
{

if($row['privat'] == 1)

Självklart måste du ha en avslutande } med.

Medlem sedan mars 2009512 inlägg
#7

jag får fortfarande

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\provar.php on line 15

Medlem sedan nov. 2000146 inlägg
#8

Ändra

$resultt = ("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********* WHERE kommentarid='$id'");

Till

$resultt = mysql_query("SELECT kommentarid,namn,datum,kommentar,id,privat FROM ********* WHERE kommentarid='$id'");
Medlem sedan mars 2009512 inlägg
#9

Nu funkar allt det var mysql_query som fattades

Medlem sedan aug. 20039 340 inlägg
#10

Meeeeen, nu glömde du ju htmlspecialchars för namnet. Nu kan jag bara skriva elak javascript-kod i namn-fältet men inte meddelandefältet...

Medlem sedan mars 2009512 inlägg
#11

Jag har fixat för både namn och meddelande

men det är inte med här i koden

Medlem sedan maj 20012 237 inlägg
#12

Lite OT men jag skulle kika på PDO.

266 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)