SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.11.2010, 14:10:33
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 35
Beiträge: 40
Leaderred befindet sich auf einem aufstrebenden Ast
Sicherheit einer Website

Hallo zusammen,

bin neu hier im Forum und hoffe das mir jemand von euch ein paar Fragen beantworten kann. Hab vor ca. 1 Monat mit der Programmierung meiner Website in HTML und PHP mit einer MySQL Datenbank angefangen. Noch läuft alles über XAMP, später soll die Seite aber auch ins Netz. Deswegen ist jetzt meine Frage, was man bei der Sicherheit beachten muss.

Eingebaut habe ich bis jetzt nur ein Loginscript mit MD5 Passwort Verschlüsselung. Da die website jede Menge Adressdaten und Kontakte enthalten wird, sollte es Unbefungten nicht ohne weiteres möglich sein auf die Daten zuzugreifen. Vielleicht noch zur Info, die Seite wird nicht öffentlich und ist nur für einen begrenzten Benutzerkreis gedacht. sollte also nicht bei Google etc auftauchen.

1. Reicht so ein Login um meine Seite zu schützen?
2. Muss ich meine Daten zwangsweise nochmal mit AES oder sonstwas verschlüssel, damit die Hoster der MySQL DB die Daten nicht im Klartext sehen können?
3. ich hab bau die Verbindung zur Datenbank in einer Header Datei auf, ist das unsicherer als wenn ich die Verbindung vor jedem Zugriff einzel herstelle?

Entschuldigt bitte wenn das doofe Fragen sind oder das hier nicht ganz das richtige Forum ist. Hab mir schon eine Menge Beiträge bei Google rausgesucht, aber meistens werd ich da nicht schlau draus, weil es für die meisten wohl selbstverständliche Fakten sind.

Vielen Dank schonmal für eure Hilfe oder Infos

Gruß
Mit Zitat antworten
  #2  
Alt 26.11.2010, 16:18:30
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Hi

Zitat:
Zitat von Leaderred Beitrag anzeigen
Hab vor ca. 1 Monat mit der Programmierung meiner Website...... Da die website jede Menge Adressdaten und Kontakte enthalten wird, sollte es Unbefungten nicht ohne weiteres möglich sein auf die Daten zuzugreifen
Das ist keine gute kombination ;)

Zitat:
1. Reicht so ein Login um meine Seite zu schützen?
2. Muss ich meine Daten zwangsweise nochmal mit AES oder sonstwas verschlüssel, damit die Hoster der MySQL DB die Daten nicht im Klartext sehen können?
3. ich hab bau die Verbindung zur Datenbank in einer Header Datei auf, ist das unsicherer als wenn ich die Verbindung vor jedem Zugriff einzel herstelle?
zu 1. Wenn der Login durchdacht ist vielleicht (ohne Code Bsp schwer zu sagen)
zu 2. Glaube deine Hoster haben anderes zu tun als datenbanken nach Daten zu durchstöbern ;) (ausser es is vielleicht dein Nachbar den du eh nicht traust)
zu 3. unrelevant Hauptsache du baust sie sicher auf ;)


vielleicht solltest du dir folgendes anschauen --> (nette keine allgemeinen) tips zur Sicherheit

mfg

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #3  
Alt 26.11.2010, 16:25:25
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Beiträge: 1.941
cortex befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Zitat:
Zitat von Leaderred Beitrag anzeigen
1. Reicht so ein Login um meine Seite zu schützen?
das login selbst ist keine raketenwissenschaft. interessant wird's beim thema session-handling, erkennung + abwehr von hackings, fehlerprotokollierung, zurücksetzen von (verlorenen) passworten etc.

Zitat:
Zitat von Leaderred Beitrag anzeigen
2. Muss ich meine Daten zwangsweise nochmal mit AES oder sonstwas verschlüssel, damit die Hoster der MySQL DB die Daten nicht im Klartext sehen können?
geschmackssache. imho zuviel des guten; kostet bspw. rechenpower. man muss aufwand, nutzen und risiko gegeneinander abwägen.

Zitat:
Zitat von Leaderred Beitrag anzeigen
3. ich hab bau die Verbindung zur Datenbank in einer Header Datei auf, ist das unsicherer als wenn ich die Verbindung vor jedem Zugriff einzel herstelle?
keine ahnung, wovon du sprichst...

Zitat:
Zitat von Leaderred Beitrag anzeigen
Entschuldigt bitte wenn das doofe Fragen sind oder das hier nicht ganz das richtige Forum ist.
passt schon... ich verschiebe das thema jedoch in ein anderes unterforum.

links / quellen:

cms-sicherheit.de
Gesundes Misstrauen - Sicherheit von Webanwendungen
Security tips for web developers

darüber hinaus ist dieses buch sehr empfehlenswert.

cx
Mit Zitat antworten
  #4  
Alt 26.11.2010, 17:47:19
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 35
Beiträge: 40
Leaderred befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Vielen Dank für die Antwort. also nicht falsch verstehen, ich brauch keien Hoch Sicherheits Seite, alle Leute die sich da einloggen kenne ich, es muss also nur das Login passen, die Verbindung zur DB sicher sein und halt die Frage mit dem Hoster, aber das scheint ja nicht so das Problem zu sein ;)


Hier mal mein Code (wenn ich das so posten darf)



Login Seite:
PHP-Code:
session_start();
include_once(
'sessionhelpers.inc.php'); 


//ABMELDUNG RAHMEN
echo "<form method='post' action='index.php'>";
echo 
"<TD CLASS=TABLEHEADER1>";
echo 
"<SPAN ID=BLACK2>Sie sind nicht mehr angemeldet</SPAN><br><br>";
echo 
"<input type='submit'value='Zum Anmeldebildschirm'>";
echo 
"</form>";
echo 
"</TD>";

$_SESSION = array();
logout(); 
}

if ( isset(
$_POST['login']) ) 
{
    
$userid check_user($_POST['username'], $_POST['userpass']);
    if ( 
$userid 
    { 
    
login($userid); 
    
    
$sqlab  "select UserID,UserLogin,UserDBName,UserNName,UserVName,UserPer,UserStatus from users where UserLogin = '$_REQUEST[username]'";
       
$res mysql_db_query(DBNAME$sqlab);
    
$num mysql_num_rows($res);
    if (
$num==0) { }
    while(
$row mysql_fetch_array($res)) {
        
    if (isset(
$row[UserID])) { $_SESSION[UserID] = $row[UserID]; }
    if (isset(
$row[UserLogin])) { $_SESSION[UserLogin] = $row[UserLogin]; }
    if (isset(
$row[UserDBName])) { $_SESSION[UserDBName] = $row[UserDBName]; }
    if (isset(
$row[UserNName])) { $_SESSION[UserNName] = $row[UserNName]; }
    if (isset(
$row[UserVName])) { $_SESSION[UserVName] = $row[UserVName]; }
    if (isset(
$row[UserPer])) { $_SESSION[UserPer] = $row[UserPer]; }
    if (isset(
$row[UserStatus])) { $_SESSION[UserStatus] = $row[UserStatus]; }
    }
    
    echo 
"<script language=\"javaScript\">top.document.location='$php_self'</script>";
    }
    else { echo 
'<script type="text/javascript">alert("Bitte Anmeldedaten prüfen!");</script>'; }
}

if ( !
logged_in() ) {
    
echo 
"<form method='post' action='$php_self'>";

//ANMELDUNG RAHMEN
echo "<TD CLASS=TABLEHEADER1>";
echo 
"<SPAN ID=BLACK2>Sie sind nicht angemeldet</SPAN><br><br>";
echo 
"<SPAN ID=BLACK2>Benutzername:</SPAN> <input name='username' type='text'>";
echo 
"<SPAN ID=BLACK2>Password:</SPAN> <input name='userpass' type='password' id='userpass'><br><br>";
echo 
"<input name='login' type='submit' id='login' value='Anmelden'>";
echo 
"</form>";
echo 
"</TD>";
}



if ( 
logged_in() ) 
{

//Geschützter Inhalt



sessionhelper Datei fürs Login System
PHP-Code:
<?php


/**
 * @return void
 */
function connect () { 
    
$con mysql_connect('localhost''root''root') or exit(mysql_error());
    
mysql_select_db('gebiet'$con) or exit(mysql_error());
}


/**
 * @param string $name
 * @param string $pass
 * @return boolean
 */
function check_user $name$pass ) {
    
// magic quotes anpassen
    
if ( get_magic_quotes_gpc() ) {
        
$name stripslashes($name);
        
$pass stripslashes($pass);
    }
    
// escapen von \x00, \n, \r, \, ', " und \x1a
    
$name mysql_real_escape_string($name);
    
// escapen von % und _
    
$name str_replace('%''\%'$name);
    
$name str_replace('_''\_'$name);

    
$sql 'SELECT UserId FROM users WHERE UserLogin = \'' $name '\' AND UserPass=\'' md5($pass) . '\'';
    if ( !
$result mysql_query($sql) ) {
        exit(
mysql_error());
    }
    if ( 
mysql_num_rows($result) == ) {
        
$user mysql_fetch_assoc($result);
        return ( 
$user['UserId'] );
    } else {
        return ( 
false );
    }
}


/**
 * @param int $userid
 * @return void
 */
function login $userid ) {
    
$sql 'UPDATE users SET UserSession = \'' session_id() . '\' WHERE UserId = ' . ((int)$userid);
    if ( !
mysql_query($sql) ) {
        exit(
mysql_error());
    }
}


/**
 * @return boolean
 */
function logged_in () { 
    
$sql 'SELECT UserId FROM users WHERE UserSession = \'' session_id() . '\'';
    if ( !
$result mysql_query($sql) ) {
        exit(
mysql_error());
    }
    return (
mysql_num_rows($result) == 1);
}


/**
 * @return void
 */
function logout () { 
    
$sql 'UPDATE users SET UserSession = NULL WHERE UserSession = \'' session_id() . '\'';
    if ( 
mysql_query($sql) ) {
        exit(
mysql_error());
    }
}

connect();

?>

Datenbankverbindung
PHP-Code:
<?
define
('DBHOST''localhost');
define('DBUSER''root');
define('DBPASSWORD''root');
define('DBNAME''gebiet');

mysql_connect(DBHOSTDBUSERDBPASSWORD);
?>
Mit Zitat antworten
  #5  
Alt 27.11.2010, 11:03:58
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Beiträge: 1.941
cortex befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

ich weiss ehrlich gesagt nicht, wie ich dir an dieser stelle weiterhelfen könnte; denkanstösse und lesenswerte quellen wurden dir bereits genannt. als antwort knallst du mir irgendeinen (veralteten) code vor die füsze, den du irgendwo im netz aufgegabelt hast... prima.

für mich persönlich ist das thema damit beendet.

cx
Mit Zitat antworten
  #6  
Alt 27.11.2010, 12:06:06
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.270
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Aber ich sage da mal was zu:
1. exit akzeptiert nur numerische Werte.
2. Die Sesion_Id in $_SESSION zu speichern ist völlig Sinn frei

Und warum da die DB Verbindung auf 2 verschiedenen Wegen aufgebaut werden muss, werde ich sicherlich nie verstehen.
Mit Zitat antworten
  #7  
Alt 27.11.2010, 13:22:07
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 35
Beiträge: 40
Leaderred befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Das ist der Code den ich benutze. Den Login hab ich nicht selber geschrieben, sondern hab das Script das ich gefunden habe auf meine Seite angepasst. Was ist daran das Problem?

Bin kein Profi Programmierer sondern habe mir alles stück für stück zusammengesucht und erarbeitet. Bin froh das alles schonmal so läuft wie es soll. Jetzt gehe ich hin und optimiere die einzelnen Scripte. Kann ja nicht jeder direkt Vollprofi sein.

Hab mir die Links auch schon angeschaut und durchgelesen, werde acuh versuchen das so umzusetzen. Nur fast jede Seite im Netz gibt zB einen anderen Weg an, wie man eine Verbindung zur DB aufbaut. Hab dann eine genommen und mich gefreut das es funktioniert hat.

Deswegen wäre ich jetzt dankbar dafür, wenn ihr mir zumindest sagen könntet, was "veraltet" ist und wo noch was überarbeitet werden muss.


@cortex
Das mit dem Quellcode war nicht direkt für dich gedacht sondern für deinen Vorredner der nach meinem Code gefragt hatte. Bin dir für deine Tipps dankbar und werde sie versuchen umzusetzen.


Zum Thema Loginscript und Code im Netz aufgegabelt:
hab mir dazu zich Seiten durchgelesen und dieser Code schien mir davon noch am sinnvollsten, da er preaktisch auch ganz gut funktioniert. Vielleicht hab ich auch nach den falschen Themen gesucht, kann sein, deswegen gibs doch aber Foren wo einem die Leute wenigstens die richtige Richtung zeigen können.



@DokuLeseHemmung
das mit der Verbindung muss ich noch überarbeiten, die sessionhelper war vom Loginscript, die andere von mir die ich vorher hatte, werds aber noch in eine Datei packen, da es bis jetzt auch so ging.
Wieso ist 2. sinnfrei? Wie speichert man denn sonst eine laufende Session? gibs da andere Funktionen für?
Mit Zitat antworten
  #8  
Alt 27.11.2010, 13:43:07
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.270
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Zitat:
Wieso ist 2. sinnfrei?
Weils keine Sinn hat.

Nenne mir bitte nur einen einzigen Grund warum du das tun willst.
Mit Zitat antworten
  #9  
Alt 27.11.2010, 13:58:42
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Beiträge: 1.941
cortex befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

Zitat:
Zitat von Leaderred Beitrag anzeigen
Was ist daran das Problem?
der ehrlichkeit halber sollte das von anfang an gesagt werden; ich denke, das gehört sich so. dazu auch nochmal ein hinweis auf unsere forenregeln, insbes. punkt c.

Zitat:
Zitat von Leaderred Beitrag anzeigen
Bin kein Profi Programmierer
das ist nicht schlimm.

Zitat:
Zitat von Leaderred Beitrag anzeigen
habe mir alles stück für stück zusammengesucht und erarbeitet [...] Jetzt gehe ich hin und optimiere die einzelnen Scripte.
und hast du auch verstanden, was du da zusammenkopiert und auf dein problem angepasst hast?

Zitat:
Zitat von Leaderred Beitrag anzeigen
Hab dann eine genommen und mich gefreut das es funktioniert hat.
und jetzt möchtest du gern, dass wir den code evaluieren bzw. refaktorisieren?

Zitat:
Zitat von Leaderred Beitrag anzeigen
deswegen gibs doch aber Foren wo einem die Leute wenigstens die richtige Richtung zeigen können.
richtig. das heisst imho allerdings nicht, komplette quellcodes zu analysieren. das ist - wie gesagt - meine persönliche meinung; es gibt auch leute, die machen das - für mich unverständlich - gern. unser anliegen ist hilfe zur selbsthilfe, nicht kostenloser support für die (php-)probleme dieser welt. wenn hier leute aufschlagen, die im rahmen ihres jobs (für den sie sicher bezahlt werden) komplexe probleme zur disposition stellen, läuft irgendwas schief. ich bin nicht der einzige, der sich in so einer situation stark zusammenreissen muss.

Zitat:
Zitat von Leaderred Beitrag anzeigen
Wieso ist 2. sinnfrei? Wie speichert man denn sonst eine laufende Session? gibs da andere Funktionen für?
du bringst hier einiges durcheinander... die frage nach der sinnhaftigkeit (siehe session_id) korreliert nicht mit der frage, wie man eine session speichert. (thema: session-management; siehe oben). belies' dich am besten selbst: Session-Funktionen.

nochmal zusammenfassend: arbeite ein paar anständige tutorials durch und sammle eigene (!) erfahrungen. bei konkreten problemen / fragen bist du hier herzlich willkommen.

cx
Mit Zitat antworten
  #10  
Alt 27.11.2010, 14:41:50
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 35
Beiträge: 40
Leaderred befindet sich auf einem aufstrebenden Ast
AW: Sicherheit einer Website

ok danke für eure offene Meinung.

das mit dem Quellcode wusste ich nicht, sorry nochmal dafür.

verstehe meistens schon, was die einzelnen Scripte machen, nur da ich sie nicht von mir aus selber aufbauen kann weil wir da einfach die Erfahrung und das Wissen zu fehlt, hab ich mir die Scripte kopiert und dann Stück für Stück angepasst, da sie unter anderem mir neue Funktionen enthalten.

Wollte nicht das ihr meinen Quellcode überarbeitet. Ist ein rein privates Projekt für mich, an dem ich mein PHP/MySQL Wissen testen und erweitern will. Finde stuhres abarbeiten von Tutorials ziehmlich öde, weil man kein Ziel hat. Ich probier, neue Sache direkt in die Seite einzuarbeiten und sehe dann ja ob funktioniert hat.

Solagen alles läuft sehe ich dann keine Fehler darin. Ich kann ja selber nicht einschätzen ob der Code veraltet ist, weil ich keinen Vergleich habe. Dachte nur das ihr mir als erfahrene Programmierer sagen könnt, ob das so ok und sicher ist, oder ob ich noch was ändern muss. Habe nicht erwartet das ihr mir den Code korrigiert, das war nicht der Grund warum ich hier schreibe

Werd mich dann nochmal anlesen und einiges überarbeiten.

Vielen Dank für eure Zeit, wenn ich was konkretes habe komme ich nochmal auf euch zurück (wenn ihr dann noch wollt :P )


@DokuLeseHemmung
keine Ahnung, mach mich da auch nochmal schlau


EDIT:
danke für die Links, genau solche Infos hab ich gesucht :)
Mit Zitat antworten
Antwort

Stichworte
aes, connect, mysql, php, sicherheit


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Website mit PHP aufbauen Euphoria PHP Grundlagen 3 22.01.2009 11:57:57
POST Daten prüfen und anschliessend an andere Website senden mororu PHP Grundlagen 4 14.11.2008 16:19:42
Versuch, eine Word-datei in eine Website einzubinden bennihaag PHP Grundlagen 4 19.03.2008 14:18:04
Lokales Verzeichnis von Website auslesen... gorch PHP für Fortgeschrittene und Experten 3 17.11.2007 12:52:31
Wichtig: Upload Script auf FTP-Server und dessen Sicherheit? Supernova PHP für Fortgeschrittene und Experten 5 21.07.2004 11:41:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:08:15 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.


© 2001-2016 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt