Sponsor-Board.de
Hilfe bei Webseiten Sicherheit

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Scripting (/forumdisplay.php?fid=108)
+---- Thema: Hilfe bei Webseiten Sicherheit (/showthread.php?tid=35541)


Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 17:37

Hey könnte mir jemand einen gefallen tun und mir ein wenig helfen bei meiner Webseite?
Suche jemanden der sich gut mit Webseiten Sicherheit auskennt und mir gute Ratschläge geben kann am liebsten via Skype
Gruß Fredix


RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:11

Hey Fredix,

vielleicht solltest du dein Problem erst mal genauer beschreiben, dann können dir direkt die passenden helfen.


RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 12.02.2013 18:14

Wie wäre es wenn du mal gewisse Code Auszüge Postest, uns beschreibst um was es genau geht etc. pp.

Grundlegend ist mal das Problem dass man ne Website auch in verschiedenen Script sprachen erstellen kann und du nicht angibst um welche es geht.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:15

Es handelt sich um PHP und MYSQL
Wenn sich jemand bereit erklärt würde ich ihm das Komplette Script zukommen lassen


RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:41

Wir kommen der Sache schon näher, wenn du jetzt noch schreibst was genau du dir unter "Sicherheit" vorstellst, dann ist die Lösung nicht mehr in weiter Ferne.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:44

Es geht mir hauptsächlich um die Spionage der Daten meiner User.
Mir wurde gesagt ich solle vermehrt auf mysql_real_escape_string setzen jedoch besitze ich gar keinen Login Bereich.
Würdest du dir meinen Code einmal ansehen auf Fehler bzw Lücken?


RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:50

Les mal das hier: Vielleicht hilft es dir ja schon mal weiter, bevor du auf diese Funktion setzt: [Link: Registrierung erforderlich]


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:56

Ich persönlich habe diese Funktion garnicht drinnen.
Daher meine Frage ob ich noch iwo drauf achten soll?
Habe POST, GET, SELECT,INSERT INTO und DELETE verwendet mehr eig nicht.


RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:58

Dann brauchst du dir eigentlich keine Gedanken zu machen mit diesen Funktionen.
Für noch mehr Sicherheit dann halt SSL-Zertifikat.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:59

Dürfte ich dir den mal den Code zukommen lassen damit du mal drüber gucken kannst ob alle iO ist?


RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 19:02

Klar kannst du machen, schick es uns einfach per Mail an [email protected]


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 19:09

Habe Sie dir gemailt


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 19:20

Sicherheitslücken können größten Teils nur durch folgende Variablen entstehen:
- POST
- GET
- REQUEST

Bei Verwendung dieser Variablen immer folgendes sicherstellen:

Datenbankabfragen:
mysql_real_escape_string zwingend verwenden. Thematik SQL Injections

Require / Include:
Falsch:

PHP-Code:
require('php/' $_GET['seite'] . '.inc.php'); 


Richtig:

PHP-Code:
$whitelist = array ('aboutus','impressum''news');
if (isset (
$_GET['seite']) && in_array($_GET['seite'], $whitelist) {
    require(
'php/' $_GET['seite'] . '.inc.php');
} else {
    require(
'php/default.inc.php');


Boolische Werte:

PHP-Code:
$foo false;
if (isset(
$_GET['foo']) && $_GET['foo'] === 'true') {
    
$foo true;


Ich denke mal, dass waren die größten Fehlerquellen.

Passwörter wären selbstverständlich zu hashen (Google "PHP SHA1")
Uploads wären zu Überprüfen (Google "PHP Detect Mime Type")

Sicherlich bist du in der Lage dies selbst zu checken, wenn du es selbst entwickelt hast. In diesem Fall wirst du denke ich auch niemanden finden der deine komplette Webseite untersucht. Zumindest nicht ohne angemessene Entlohnung.

Gegen bezalung würde ichs mir anschauen ;-)


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 19:52

Wie hoch soll diese bezahlung sein ?


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 20:10

Fredix schrieb:
Wie hoch soll diese bezahlung sein ?


Du hast mich falsch verstanden. Ich wollte zum Ausdruck bringen, dass das eine Sache ist, mit der man sich auseinandersetzen sollte.

Ansonsten wäre es besser wenn man soetwas gleich in Auftrag gibt.

Wenn man ein anständiges Code Review macht, und jede Logik verstehen will, dauert das fast genauso lange, als würde man die Logik selber schreiben.

Wie umfangreich ist denn dein Projekt? Wenn es dir auf Sicherheit ankommt denke ich mal größer.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 20:29

Ist lediglich ein kleines Projekt mit wenig Script.
Ich will lediglich das bei dem script nichts passiert was den usern oder meiner Datenbank schadet


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 20:35

Was ist das für ein kleines Script? Erweiterung für ein CMS? Was macht es?


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 20:42

Man kann sein Auto mit allen tuningsmaßnamen eintragen, die autos anderer user ansehen und die details sehen sowie liken


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 21:10

Na dass kann ja dann noch gerade so hier im Forum gepostet werden Wink
Dann kann man sich dass ganze auch mal anschauen.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 21:17

user.php

PHP-Code:
<?php
include 'heartbeat.php';

$user $_GET["user"];

$abfrage "SELECT * FROM login WHERE username = '$user'";
$ergebnis mysql_query($abfrage)or die(mysql_error());
while(
$row mysql_fetch_object($ergebnis))
   {
   echo 
"<center><p><img src='/beta/upload/$row->bild1' width='600' height='400' /></p><br>";
   echo 
"<a href='http://n3xd.eu/beta/bild.php?bild=$row->bild2&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild2' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild3&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild3' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild4&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild4' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild5&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild5' width='150' height='125' /></a><br>";
   echo 
"<a href='http://n3xd.eu/beta/bewertung.php?user=$user'>Like!</a><br>";
   echo 
"<table border='0'><tr><td>Username </td><td>$row->username</td></tr><tr><td>Marke </td><td>$row->marke</td></tr><tr><td>Modell </td><td>$row->modell</td></tr><tr><td>PS </td><td>$row->ps</td></tr><tr><td>Baujahr </td><td>$row->bj</td></tr><tr><td>Farbe </td><td>$row->color</td></tr><tr><td>Felgen </td><td>$row->felgen</td></tr><tr><td>Fahrwerk </td><td>$row->fahrwerk</td></tr><tr><td>Interieur </td><td>$row->interieur</td></tr><tr><td>Exterieur </td><td>$row->ext</td></tr><tr><td>Beschreibung des Users</td><td>$row->disc</td></tr></table>";
$counter mysql_num_rows(mysql_query("SELECT * FROM bewertung WHERE username='$user'"));
echo 
"$counter </center>";
   }

?>

eintragen.php

PHP-Code:
<?php
include 'heartbeat.php';

$username $_POST["username"];
$passwort $_POST["passwort"];
$passwort2 $_POST["passwort2"];
$email $_POST["email"];
$marke $_POST["marke"];
$modell $_POST["modell"];
$bj $_POST["bj"];
$ps $_POST["ps"];
$hubraum $_POST["hubraum"];
$color $_POST["color"];
$fahrwerk $_POST["fahrwerk"];
$felgen $_POST["felgen"];
$interieur $_POST["interieur"];
$ext $_POST["ext"];
$disc $_POST["disc"];


if(
$passwort != $passwort2 OR empty($username) OR empty($passwort) OR empty($email) OR empty($marke) OR empty($modell) OR empty($bj) OR empty($disc))
    {
    echo 
"Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>";
    exit;
    }
$passwort md5($passwort);

$result mysql_query("SELECT id FROM login WHERE username LIKE '$username'");
$menge mysql_num_rows($result);

if(
$menge == 0)
    {
$eintrag "INSERT INTO login
(username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc)
VALUES
('
$username', '$passwort', '$email', '$marke', '$modell', '$bj', '$ps', '$hubraum', '$color','$fahrwerk', '$felgen', '$interieur', '$ext', '$disc')";

$eintragen mysql_query($eintrag)or die(mysql_error());

$datei $_FILES['datei']['name']; 
$dateityp GetImageSize($_FILES['datei']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
    
$eintrag "UPDATE login Set bild1 = '$datei' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei2 $_FILES['datei2']['name']; 
$dateityp GetImageSize($_FILES['datei2']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei2']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei2']['tmp_name'], "upload/".$_FILES['datei2']['name']);
    
$eintrag "UPDATE login Set bild2 = '$datei2' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei3 $_FILES['datei3']['name']; 
$dateityp GetImageSize($_FILES['datei3']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei3']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei3']['tmp_name'], "upload/".$_FILES['datei3']['name']);
    
$eintrag "UPDATE login Set bild3 = '$datei3' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


$datei4 $_FILES['datei4']['name']; 
$dateityp GetImageSize($_FILES['datei4']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei4']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei4']['tmp_name'], "upload/".$_FILES['datei4']['name']);
    
$eintrag "UPDATE login Set bild4 = '$datei4' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei5 $_FILES['datei5']['name']; 
$dateityp GetImageSize($_FILES['datei5']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei5']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei5']['tmp_name'], "upload/".$_FILES['datei5']['name']);
    
$eintrag "UPDATE login Set bild5 = '$datei5' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


    if(
$eintragen == true)
        {
        echo 
"Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
        }
    else
        {
        echo 
"Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>";
        }


    }

else
    {
    echo 
"Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>";
    }

?>

marke.php

PHP-Code:
<?php
include 'heartbeat.php';

$markeb $_GET["b"];

$abfrage "SELECT * FROM login WHERE marke = '$markeb'";
$ergebnis mysql_query($abfrage)or die(mysql_error());
while(
$row mysql_fetch_object($ergebnis))
   {
   echo 
"<center><a href='http://n3xd.eu/beta/user.php?user=$row->username'><img src='http://n3xd.eu/beta/upload/$row->bild1' width='500' height='300' /></a></center>";
   }

?>

bewertung.php

PHP-Code:
<?php
include 'heartbeat.php';

$ip=getenv("REMOTE_ADDR");
$user $_GET["user"];

$test mysql_query("SELECT * FROM bewertung WHERE ip='$ip' AND username='$user'");    
if(
mysql_num_rows($test) != 1) {
 
mysql_query("INSERT INTO bewertung SET ip='$ip', username='$user'");
echo 
"Sie haben für den User $user geliked";
} else {
echo 
"Sie haben bereits geliked"
}

?>


So das wars alles


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 23:24

Dein Code ist eine tickende Zeitbombe!

PHP-Code:
//user.php
//Überprüfen ob User überhaupt vorhanden ist:
$user '';
if (isset (
$_GET['user'])) {
    
$user $_GET["user"];
}
/*ggf:
else
{
    die('Kein Benutzer Übergeben');
}
*/
//Daten Escapen
$sqlSecureUser mysql_real_escape_string($user);
$abfrage "SELECT * FROM login WHERE username = '$sqlSecureUser'";
$counter mysql_num_rows(mysql_query("SELECT * FROM bewertung WHERE username='$sqlSecureUser'"));

//eintragen.php
//Dass selbe Spiel: Überprüfen ob vorhanden, Escapen und SQL Query anpassen!
$username $_POST["username"];
$passwort $_POST["passwort"];
$passwort2 $_POST["passwort2"];
$email $_POST["email"];
$marke $_POST["marke"];
$modell $_POST["modell"];
$bj $_POST["bj"];
$ps $_POST["ps"];
$hubraum $_POST["hubraum"];
$color $_POST["color"];
$fahrwerk $_POST["fahrwerk"];
$felgen $_POST["felgen"];
$interieur $_POST["interieur"];
$ext $_POST["ext"];
$disc $_POST["disc"];

//marke.php
//Selbes Spiel!
$markeb $_GET["b"];

//bewertung.php
//Und nochmals. Bei der IP bin ich mir nicht sich, ob dass der Client verändern kann. Musst du mal googlen, aber schaden kanns nicht
$ip=getenv("REMOTE_ADDR");
$user $_GET["user"]; 


Wenn du die Änderungen vornimmst sollte es safe sein, du wirst jedoch noch Fehlermeldungen erhalten wenn deine SqlAbfrage kein Ergebnis zurückliefert. Dies solltest du unbedingt abfangen.

Ansonsten hast du noch ein paar schönheitsfehler drinne!

- Strings werden generell mit Hochkomma und nicht Doppelten Anführungszeichen angegeben. (Performance!)
- Verwende $_SERVER für IP
- Bei den Bilderupload hätts auch eine Schleife getan
- EVA Prinzip
- ...


RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 14:10

Ich habe das ganze jetzt mal in meine Eintragen.php eingefügt.
Nun klappt das eintragen nicht mehr -.-
Woran liegt es? Es zeigt keine Fehlermeldungen an sondern bleibt einfach weiß

PHP-Code:
<?php
include 'heartbeat.php';
$username '';
if (isset (
$_POST['username'])) {
    
$user $_POST["username"];
}
else
{
    die(
'Kein Benutzer Übergeben');
}
$sqlSecureUsername mysql_real_escape_string($username);

$passwort '';
if (isset (
$_POST['passwort'])) {
    
$passwort $_POST["passwort"];
}
else
{
    die(
'Kein Passwort Übergeben');
}

$passwort2 '';
if (isset (
$_POST['passwort2'])) {
    
$passwort2 $_POST["passwort2"];
}
else
{
    die(
'Kein Passwort2 Übergeben');
}

$email '';
if (isset (
$_POST['email'])) {
    
$email $_POST["email"];
}
else
{
    die(
'Keine Email Übergeben');
}
$sqlSecureEmail mysql_real_escape_string($email);

$marke '';
if (isset (
$_POST['marke'])) {
    
$marke $_POST["marke"];
}
else
{
    die(
'Keine Marke Übergeben');
}
$sqlSecureMarke mysql_real_escape_string($marke);

$modell '';
if (isset (
$_POST['modell'])) {
    
$modell $_POST["modell"];
}
else
{
    die(
'Kein Modell Übergeben');
}
$sqlSecureModell mysql_real_escape_string($modell);

$bj '';
if (isset (
$_POST['bj'])) {
    
$bj $_POST["bj"];
}
else
{
    die(
'Kein Baujahr Übergeben');
}
$sqlSecureBj mysql_real_escape_string($bj);

$ps '';
if (isset (
$_POST['ps'])) {
    
$ps $_POST["ps"];
}
else
{
    die(
'Keine PS Zahl Übergeben');
}
$sqlSecurePs mysql_real_escape_string($ps);

$hubraum '';
if (isset (
$_POST['hubraum'])) {
    
$hubraum $_POST["hubraum"];
}
else
{
    die(
'Kein Hubraum Übergeben');
}
$sqlSecureHubraum mysql_real_escape_string($hubraum);

$color '';
if (isset (
$_POST['color'])) {
    
$color $_POST["color"];
}
else
{
    die(
'Keine Farbe Übergeben');
}
$sqlSecureColor mysql_real_escape_string($color);

$fahrwerk '';
if (isset (
$_POST['fahrwerk'])) {
    
$fahrwerk $_POST["fahrwerk"];
}
else
{
    die(
'Kein Fahrwerk Übergeben');
}
$sqlSecureFahrwerk mysql_real_escape_string($fahrwerk);

$felgen '';
if (isset (
$_POST['felgen'])) {
    
$felgen $_POST["felgen"];
}
else
{
    die(
'Keine Felgen Übergeben');
}
$sqlSecureFelgen mysql_real_escape_string($felgen);

$interieur '';
if (isset (
$_POST['interieur'])) {
    
$interieur $_POST["interieur"];
}
else
{
    die(
'Kein Interieur Übergeben');
}
$sqlSecureInterieur mysql_real_escape_string($interieur);

$ext '';
if (isset (
$_POST['ext'])) {
    
$ext $_POST["ext"];
}
else
{
    die(
'Kein Exterieur Übergeben');
}
$sqlSecureExt mysql_real_escape_string($ext);

$disc '';
if (isset (
$_POST['disc'])) {
    
$disc $_POST["disc"];
}
else
{
    die(
'Keine Beschreibung Übergeben');
}
$sqlSecureDisc mysql_real_escape_string($disc);


if(
$passwort != $passwort2)
    {
    echo 
"Eingabefehler.Passwörter sind nicht gleich! <a href=\"eintragen.html\">Zurück</a>";
    exit;
    }
$passwort md5($passwort);
$sqlSecurePasswort mysql_real_escape_string($passwort);

$result mysql_query("SELECT id FROM login WHERE username = '$sqlSecureUsername'";
$menge mysql_num_rows($result);

if(
$menge == 0)
    {
$eintrag "INSERT INTO login
(username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc)
VALUES
('
$sqlSecureusername', '$sqlSecurePasswort', '$sqlSecureEmail', '$sqlSecureMarke', '$sqlSecureModell', '$sqlSecureBj', '$sqlSecurePs', '$sqlSecureHubraum', '$sqlSecureColor','$sqlSecureFahrwerk', '$sqlSecureFelgen', '$sqlSecureInterieur', '$sqlSecureExt', '$sqlSecureDisc')";

$eintragen mysql_query($eintrag)or die(mysql_error());

$datei $_FILES['datei']['name']; 
$dateityp GetImageSize($_FILES['datei']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
    
$eintrag "UPDATE login Set bild1 = '$datei' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei2 $_FILES['datei2']['name']; 
$dateityp GetImageSize($_FILES['datei2']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei2']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei2']['tmp_name'], "upload/".$_FILES['datei2']['name']);
    
$eintrag "UPDATE login Set bild2 = '$datei2' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei3 $_FILES['datei3']['name']; 
$dateityp GetImageSize($_FILES['datei3']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei3']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei3']['tmp_name'], "upload/".$_FILES['datei3']['name']);
    
$eintrag "UPDATE login Set bild3 = '$datei3' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


$datei4 $_FILES['datei4']['name']; 
$dateityp GetImageSize($_FILES['datei4']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei4']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei4']['tmp_name'], "upload/".$_FILES['datei4']['name']);
    
$eintrag "UPDATE login Set bild4 = '$datei4' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei5 $_FILES['datei5']['name']; 
$dateityp GetImageSize($_FILES['datei5']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei5']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei5']['tmp_name'], "upload/".$_FILES['datei5']['name']);
    
$eintrag "UPDATE login Set bild5 = '$datei5' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


    if(
$eintragen == true)
        {
        echo 
"Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
        }
    else
        {
        echo 
"Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>";
        }


    }

else
    {
    echo 
"Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>";
    }

?>




RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 13.02.2013 16:41

Auf den ersten Blick sehe ich jetzt keinen Fehler.

Überprüfe mal ob der überhaupt hier reinspringt:
<?php if($menge == 0) ?>
Eine ein echo 'test'; hier ausgeben.

Wäre aufjedenfall erst mal hilfreich zu wissen, woran das liegt.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:33

Bleibt beim gleichen Fehler

HTTP-Fehler 500 (Internal Server Error): Beim Versuch des Servers, die Anforderung zu verarbeiten, ist eine unerwartete Bedingung aufgetreten.


RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 13.02.2013 22:37

error_log angucken
error_reporting(E_ALL)

Mit foreach kannst du auch alle POSTs und GETs aufeinmal mit nur einem Befehl prüfen und escapen lassen.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:38

Kannst du mir ein Konkretes Beispiel geben?
Versuche aktuell mit dem Script PHP ein wenig zu lernen


RE: Hilfe bei Webseiten Sicherheit - Sysix - 13.02.2013 22:42

[Link: Registrierung erforderlich]

ich frag mich welche PHP Version du hast... eine 2faches Escaping wäre fatal Wink
Ich will ja niemanden anschauen, der den Tipp gegeben hat das zu benutzen Smile

versuch mal nach der mysql_query mit "echo mysql_error();"


RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:45

Habe ich das nicht schon mit
$eintragen = mysql_query($eintrag)or die(mysql_error());
?


RE: Hilfe bei Webseiten Sicherheit - Sysix - 13.02.2013 22:47

Z.B.

Code:
$eintrag = "UPDATE login Set bild4 = '$datei4' WHERE username = '$sqlSecureUsername'";
    $eintragen = mysql_query($eintrag);




RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:59

Dahinter setzen?
Oder wie meinst du das jetzt?


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 13.02.2013 23:01

Was er mein ist soetwas, damits weniger Code ist:

PHP-Code:
<?php
//Neuer globale Arrays erstellen, die ungesicherte Daten enthalten
$_UNSAFE_POST = array();
$_UNSAFE_GET = array();
$_UNSAFE_COOKIE = array();
//Gefahren in dem globalen Array Post entschärfen
foreach ($_POST as $var => $value) {
    
$_UNSAFE_POST[$var] = $value;
    if (!
is_array($value)) {
        
$value trim ($value);
    } else {
        
$value '';
    }
    
$value htmlspecialchars ($valueENT_QUOTES'UTF-8');    
    
$value strip_tags ($value);
    
$value stripslashes ($value);
    
$value mysql_real_escape_string ($value);
    
$_POST[$var] = $value;
}
//Gefahren in dem globalen Array Get entschärfen
foreach ($_GET as $var => $value) {
    
$_UNSAFE_GET[$var] = $value;    
    if (!
is_array($value)) {
        
$value trim ($value);
    } else {
        
$value '';
    }
    
$value htmlspecialchars ($valueENT_QUOTES'UTF-8');    
    
$value strip_tags ($value);
    
$value stripslashes ($value);
    
$value mysql_real_escape_string ($value);
    
$_GET[$var] = $value;
}
//Gefahren in dem gloablen Array Cookie entschärfen
foreach ($_COOKIE as $var => $value) {
    
$_UNSAFE_COOKIE[$var] = $value;    
    if (!
is_array($value)) {
        
$value trim ($value);
    } else {
        
$value '';
    }
    
$value htmlspecialchars ($valueENT_QUOTES'UTF-8');    
    
$value strip_tags ($value);
    
$value stripslashes ($value);
    
$value mysql_real_escape_string ($value);
    
$_COOKIE[$var] = $value;
}
?>

$_UNSAFE_POST verwendet man ganz normal für Vergleiche, Darstellung
$POST verwendet man in verbindug mit Datenbank

Haste Error Reporting eingeschalten?

Mach mal alle 5 Zeilen ein die("Test"); und nehme dann beginnend von vorne alles nacheinander weg, um heraus zu finden wo der 500 zustande kommt.

//Edit:
Sehe gerade im Link zuvor das EscapeString depricated ist. Es steht aber auch dabei welche Methode stattdessen zu verwenden ist.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 14.02.2013 00:14

Also aktuell weiß ich gerade nicht was ich machen soll.
Bin ein wenig verwirrt versuche die Error log auszulesen komme aber aktuell nicht daran
Fehler ist laut Error Log

PHP Parse error: syntax error, unexpected ';' in /beta/eintragen.php on line 160,

Ganze nochmal neu geschrieben nun so

PHP-Code:
<?php
include 'heartbeat.php';

$username '';
if (isset (
$_POST['username'])) {
    
$username $_POST["username"];
}
else
{
    die(
'Kein Benutzer Übergeben');
}
$sqlSecureUsername mysql_real_escape_string($username);

$passwort '';
if (isset (
$_POST['passwort'])) {
    
$passwort $_POST["passwort"];
}
else
{
    die(
'Kein Passwort Übergeben');
}

$passwort2 '';
if (isset (
$_POST['passwort2'])) {
    
$passwort2 $_POST["passwort2"];
}
else
{
    die(
'Kein Passwort2 Übergeben');
}

$email '';
if (isset (
$_POST['email'])) {
    
$email $_POST["email"];
}
else
{
    die(
'Keine Email Übergeben');
}
$sqlSecureEmail mysql_real_escape_string($email);

$marke '';
if (isset (
$_POST['marke'])) {
    
$marke $_POST["marke"];
}
else
{
    die(
'Keine Marke Übergeben');
}
$sqlSecureMarke mysql_real_escape_string($marke);

$modell '';
if (isset (
$_POST['modell'])) {
    
$modell $_POST["modell"];
}
else
{
    die(
'Kein Modell Übergeben');
}
$sqlSecureModell mysql_real_escape_string($modell);

$bj '';
if (isset (
$_POST['bj'])) {
    
$bj $_POST["bj"];
}
else
{
    die(
'Kein Baujahr Übergeben');
}
$sqlSecureBj mysql_real_escape_string($bj);

$ps '';
if (isset (
$_POST['ps'])) {
    
$ps $_POST["ps"];
}
else
{
    die(
'Keine PS Zahl Übergeben');
}
$sqlSecurePs mysql_real_escape_string($ps);

$hubraum '';
if (isset (
$_POST['hubraum'])) {
    
$hubraum $_POST["hubraum"];
}
else
{
    die(
'Kein Hubraum Übergeben');
}
$sqlSecureHubraum mysql_real_escape_string($hubraum);

$color '';
if (isset (
$_POST['color'])) {
    
$color $_POST["color"];
}
else
{
    die(
'Keine Farbe Übergeben');
}
$sqlSecureColor mysql_real_escape_string($color);

$fahrwerk '';
if (isset (
$_POST['fahrwerk'])) {
    
$fahrwerk $_POST["fahrwerk"];
}
else
{
    die(
'Kein Fahrwerk Übergeben');
}
$sqlSecureFahrwerk mysql_real_escape_string($fahrwerk);

$felgen '';
if (isset (
$_POST['felgen'])) {
    
$felgen $_POST["felgen"];
}
else
{
    die(
'Keine Felgen Übergeben');
}
$sqlSecureFelgen mysql_real_escape_string($felgen);

$interieur '';
if (isset (
$_POST['interieur'])) {
    
$interieur $_POST["interieur"];
}
else
{
    die(
'Kein Interieur Übergeben');
}
$sqlSecureInterieur mysql_real_escape_string($interieur);

$ext '';
if (isset (
$_POST['ext'])) {
    
$ext $_POST["ext"];
}
else
{
    die(
'Kein Exterieur Übergeben');
}
$sqlSecureExt mysql_real_escape_string($ext);

$disc '';
if (isset (
$_POST['disc'])) {
    
$disc $_POST["disc"];
}
else
{
    die(
'Keine Beschreibung Übergeben');
}
$sqlSecureDisc mysql_real_escape_string($disc);



if(
$passwort != $passwort2)
    {
    echo 
"Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>";
    exit;
    }
$passwort md5($passwort);
$sqlSecurePasswort mysql_real_escape_string($passwort);

$result mysql_query("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername");
$menge mysql_num_rows($result);

if(
$menge == 0)
    {
$eintrag "INSERT INTO login
(username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc)
VALUES
('
$sqlSecureUsername', '$sqlSecurePasswort', '$sqlSecureEmail', '$sqlSecureMarke', '$sqlSecureModell', '$sqlSecureBj', '$sqlSecurePs', '$sqlSecureHubraum', '$sqlSecureColor','$sqlSecureFahrwerk', '$sqlSecureFelgen', '$sqlSecureInterieur', '$sqlSecureExt', '$sqlSecureDisc')";

$eintragen mysql_query($eintrag)or die(mysql_error());

$datei $_FILES['datei']['name']; 
$dateityp GetImageSize($_FILES['datei']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
    
$eintrag "UPDATE login Set bild1 = '$datei' WHERE username = '$username'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei2 $_FILES['datei2']['name']; 
$dateityp GetImageSize($_FILES['datei2']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei2']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei2']['tmp_name'], "upload/".$_FILES['datei2']['name']);
    
$eintrag "UPDATE login Set bild2 = '$datei2' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei3 $_FILES['datei3']['name']; 
$dateityp GetImageSize($_FILES['datei3']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei3']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei3']['tmp_name'], "upload/".$_FILES['datei3']['name']);
    
$eintrag "UPDATE login Set bild3 = '$datei3' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


$datei4 $_FILES['datei4']['name']; 
$dateityp GetImageSize($_FILES['datei4']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei4']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei4']['tmp_name'], "upload/".$_FILES['datei4']['name']);
    
$eintrag "UPDATE login Set bild4 = '$datei4' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }

$datei5 $_FILES['datei5']['name']; 
$dateityp GetImageSize($_FILES['datei5']['tmp_name']);
if(
$dateityp[2] != 0)
   {

   if(
$_FILES['datei5']['size'] <  1024000000)
      {
      
move_uploaded_file($_FILES['datei5']['tmp_name'], "upload/".$_FILES['datei5']['name']);
    
$eintrag "UPDATE login Set bild5 = '$datei5' WHERE username = '$sqlSecureUsername'";
    
$eintragen mysql_query($eintrag);
      }

   else
      {
         echo 
"Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo 
"Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }


    if(
$eintragen == true)
        {
        echo 
"Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
        }
    else
        {
        echo 
"Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>";
        }


    }

else
    {
    echo 
"Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>";
    }

?>

So klappts...


RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 14.02.2013 04:53

Aufgrund deiner PN habe ich jetzt nochmal schnell drüber geschaut. Sofern jeder MySQL Query nur Variablen in Saver Form (also Variablen mit Secure im Namen) vorhanden sind, ist dieser wirklich sicher. Sorry will mir nicht jede Abfrage anschauen, sieht aber auf den ersten Blick gut aus.

Folgende Ergänzung sollte Ursprünglich gepostet werden, kannst du aber derzeit gedroßt ignorieren:

Wie bereits erwähnt wird allerdings mysql_real_escape_string nicht mehr in Zukunft unterstützt. Solange keine Fehlermeldung kommt kannst du diese nehmen.

Ansonsten solltest du folgende Methode verwenden:
- So entweder ich bin dumm oder dass steht nicht mehr da:
[Link: Registrierung erforderlich]

Ursprünglich stand hier, welche Methode verwendet werden soll. Aber irgendwie ist es nicht mehr da. Also wenns nicht mehr funktioniert, dann diese Website öffnen, da sollte die Alternative stehen.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 15.02.2013 22:59

Hey habe einen Fehler gefunden und weiß nicht woran es liegt vllt könnt ihr mir helfen.

Es handelt sich um diese Funktion

PHP-Code:
$result mysql_query("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername");
$menge mysql_num_rows($result);

if(
$menge == 0)
    { 

Diese verhindert normalerweise das es mehrere User mit dem gleichen Username gibt jedoch funktioniert diese nun nicht mehr seit Escape woran liegt das?


RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 15.02.2013 23:13

("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername")

Fehlt abschließendes Single Quote.

Ein Tipp / Bitte: Nutze für PHP Codes etc. pastebin.com - das hier ist schrecklich.

Desweiteren solltest du `id` FROM `login` schreiben - alternativ PDO Statements.


RE: Hilfe bei Webseiten Sicherheit - Fredix - 15.02.2013 23:20

Ah okay vielen dank jetzt fällt es mir wie schuppen von den Augen xD

Weißt du en gutes Bilder Multiupload Tutorial?
Weil das so immer ziemlich lange dauert


RE: Hilfe bei Webseiten Sicherheit - Fredix - 18.02.2013 17:39

Ich habe nun ein Update geschrieben wo nur wenn alles iO ist also auch die Bilder alles in die Datenbank geschrieben wird nur wenn ich das Script nun so laufen lasse läuft es in einen Error und sagt mir in Line 322 also in meinem Else ist ein fehler vor Benutzer Name anlegen

PHP-Code:
$tempname $_FILES['datei']['tmp_name'];  
    
$name md5(filesize($tempname).microtime());
    
$name1 $name.".jpg";  
    
$type $_FILES['datei']['type'];  
    
$size $_FILES['datei']['size']; 
if (empty(
$size)) {
$name1 '';
} else {
    if(
$type != "image/png" && $type != "image/jpeg") {  
        
$err[] = "Bild1 entspricht keiner png oder jpg/jpeg datei!.";  
    }  
    if(
$size "4194304") {  
        
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!"
    }  
    if(empty(
$err)) {  
        
move_uploaded_file($tempname"upload/".$name1); 
    }  
    else {  
        foreach(
$err as $error)  
        echo 
"$error<br>";  
    }  
}
    
$tempname $_FILES['datei2']['tmp_name'];  
    
$name md5(filesize($tempname).microtime());
    
$name2 $name.".jpg";  
    
$type $_FILES['datei2']['type'];  
    
$size $_FILES['datei2']['size']; 
if (empty(
$size)) {
$name2 '';
} else {
    if(
$type != "image/png" && $type != "image/jpeg") {  
        
$err[] = "Bild2 entspricht keiner png oder jpg/jpeg datei!."
    }  
    if(
$size "4194304") {  
        
$err[] = "Das Bild2 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!";  
    }  
    if(empty(
$err)) {  
        
move_uploaded_file($tempname"upload/".$name2); 
    }  
    else {  
        foreach(
$err as $error)  
        echo 
"$error<br>";  
    }  
}
    
$tempname $_FILES['datei3']['tmp_name'];  
    
$name md5(filesize($tempname).microtime());
    
$name3 $name.".jpg";  
    
$type $_FILES['datei3']['type'];  
    
$size $_FILES['datei3']['size']; 
if (empty(
$size)) {
$name3 '';
} else {
    if(
$type != "image/png" && $type != "image/jpeg") {  
        
$err[] = "Bild3 entspricht keiner png oder jpg/jpeg datei!.";  
    }  
    if(
$size "4194304") {  
        
$err[] = "Das Bild3 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!";  
    }  
    if(empty(
$err)) {  
        
move_uploaded_file($tempname"upload/".$name3); 
    }  
    else {  
        foreach(
$err as $error)  
        echo 
"$error<br>";  
    }  
}
    
$tempname $_FILES['datei4']['tmp_name'];  
    
$name md5(filesize($tempname).microtime());
    
$name4 $name.".jpg";  
    
$type $_FILES['datei4']['type'];  
    
$size $_FILES['datei4']['size']; 
if (empty(
$size)) {
$name4 '';
} else {
    if(
$type != "image/png" && $type != "image/jpeg") {  
        
$err[] = "Bild4 entspricht keiner png oder jpg/jpeg datei!.";  

    }  
    if(
$size "4194304") {  
        
$err[] = "Das Bild4 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!";  

    }  
    if(empty(
$err)) {  
        
move_uploaded_file($tempname"upload/".$name4); 
    }  
    else {  
        foreach(
$err as $error)  
        echo 
"$error<br>";  
    }  
}
    
$tempname $_FILES['datei5']['tmp_name'];  
    
$name md5(filesize($tempname).microtime());
    
$name5 $name.".jpg";  
    
$type $_FILES['datei5']['type'];  
    
$size $_FILES['datei5']['size']; 
if (empty(
$size)) {
$name5 '';
} else {
    if(
$type != "image/png" && $type != "image/jpeg") {  
        
$err[] = "Bild5 entspricht keiner png oder jpg/jpeg datei!.";  
    }  
    if(
$size "4194304") {  
        
$err[] = "Das Bild5 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!";  
    }  
    if(empty(
$err)) {  
        
move_uploaded_file($tempname"upload/".$name5); 
    }  
    else {  
        foreach(
$err as $error)  
        echo 
"$error<br>"
    } 

if(
$menge == && empty($err))
    {
$eintrag "INSERT INTO login
(username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc, bild1, bild2, bild3, bild4, bild5)
VALUES
('
$sqlSecureUsername', '$sqlSecurePasswort', '$sqlSecureEmail', '$sqlSecureMarke', '$sqlSecureModell', '$sqlSecureBj', '$sqlSecurePs', '$sqlSecureHubraum', '$sqlSecureColor','$sqlSecureFahrwerk', '$sqlSecureFelgen', '$sqlSecureInterieur', '$sqlSecureExt', '$sqlSecureDisc', '$name1', '$name2', '$name3', '$name4', '$name5')";
$eintragen mysql_query($eintrag)or die(mysql_error());

Wo liegt mein Denk fehler?