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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |
26.11.2010, 15:10:33
|
Anfänger
|
|
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
|
|
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ß
|
26.11.2010, 17:18:30
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Sicherheit einer Website
Hi
Zitat:
Zitat von Leaderred
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!
|
26.11.2010, 17:25:25
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Sicherheit einer Website
Zitat:
Zitat von Leaderred
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
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
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
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
|
26.11.2010, 18:47:19
|
Anfänger
|
|
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
|
|
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) == 1 ) {
$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(DBHOST, DBUSER, DBPASSWORD);
?>
|
27.11.2010, 12:03:58
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
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
|
27.11.2010, 13:06:06
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
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.
|
27.11.2010, 14:22:07
|
Anfänger
|
|
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
|
|
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?
|
27.11.2010, 14:43:07
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Sicherheit einer Website
Weils keine Sinn hat.
Nenne mir bitte nur einen einzigen Grund warum du das tun willst.
|
27.11.2010, 14:58:42
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Sicherheit einer Website
Zitat:
Zitat von Leaderred
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
Bin kein Profi Programmierer
|
das ist nicht schlimm.
Zitat:
Zitat von Leaderred
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
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
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
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
|
27.11.2010, 15:41:50
|
Anfänger
|
|
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
|
|
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 :)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Hybrid-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:07:58 Uhr.
|