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 ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung 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:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

 
 
Themen-Optionen Ansicht
  #1  
Alt 14.07.2014, 13:11:06
wucke13 wucke13 ist offline
Anfänger
 
Registriert seit: Jul 2014
Alter: 41
Beiträge: 2
PHP_Sicherheit vom Laien programmiert

Hallöchen, ich bin der Wucke und beschäftige mich seit nunmehr 3 Tagen mit PHP.
Ich hab dementsprechend wenig Ahnung. Ich bin ein Fan von Funktionen, kann mich aber mit objekorientierter Pogrammierung nicht so sehr anfreunden. Mir ist Prozedurale Programmierung wesentlich sympathischer.

So nun zur Frage:
Ich arbeite an einem Schulprojekt, in einem Team (welches das gute alte Motto 'Toll Ein Anderer Machts' bevolgt), als PHP-Zuständiger. Für bei dem Schulprojekt geht es um eine MySQL Datenbank, die unseren Vertretungsplan beherbergen soll. Natürlich gibt es einen öffentlichen Teil, aber ebene auch einen vertraulichen Teil um neue Stundenausfälle einzupflegen. Diesen Teil soll ich umsetzen.

Ich hab jetzt gut 20h damit verbracht ein Sicherheitsskript auszutüfteln, von dem ich meine das es Sicher ist, und wollte mir dazu mal ein wenig Kritik anhören. Besonders interessieren tuen mich natürlich Sicherheitslücken, aber wenn ihr da Code findet der eurer Meinung nach keinen Sinn ergibt, dann bitte auch rückmelden :)

Zum Einsatz des Skripts: Auf jeder der vertraulichen Seiten gibts am Anfang einen
<?php ?> Tag, der das Sicherheitsskript aufruft, also:
Code:
<?php
require_once 'auth.php';
auth_user();
Das eigentliche Skript sieht wie folgt aus:
Code:
<?php
################################
###Konstanten für MySQL#########
define("SQL_IP",   '127.0.0.1');
		
define("SQL_DB",   'test');
define("SQL_USR",  'root');
define("SQL_PWD", '');
################################


##################################
###Session erzeugen###############
ini_set('session.use_trans_id',1);
session_start();
if (!isset($_SESSION['ipadr']))
	{
	$_SESSION['ipadr'] = $_SERVER['REMOTE_ADDR'];
	}
	else if ($_SESSION['ipadr'] != $_SERVER['REMOTE_ADDR'])
	{
	kill_session();
	}
##################################


###############################
###Funktionen##################
function bind_user_to_session()
	{ 
	$_SESSION['username'] = $_POST["user"];
	$_SESSION['password'] = $_POST["pwd_md5"];
	}
	
function kill_session()
	{
	session_unset();
	if (isset($_COOKIE[session_name()]))
		{
		setcookie(session_name(), "", time()-86400);
		}
	session_destroy();
	}

function check_session()
	{
	if (isset($_SESSION['username']) AND isset($_SESSION['password']))
		{
		if ($_SESSION['username']!=null AND $_SESSION['password']!=null)
			{
			return true;
			}
		}
	else
		{
		return false;
		}
	}
	
function check_if_post()
	{
	if (isset($_POST["user"]) AND isset($_POST["pwd_md5"]))
		{
		if($_POST["user"]!=null AND $_POST["pwd_md5"]!=null)
			{
			return true;
			}
		}
	else
		{
		return false;
		}
	}
	
function check_auth($user,$pwd)
	{
	$db = @new mysqli( $SQL_IP, $SQL_USR, $SQL_PWD, $SQL_DB );
	$password_query="SELECT Password FROM User WHERE User=\"".$user."\";";
	if($user==null OR $pwd==null)
		{
		return false;
		}	
	else if ($user=="admin" AND $pwd=="c51ce410c124a10e0db5e4b97fc2af39")
		{
		return true;
		}
	else if(mysqli_connect_errno() == 0)
		{
		if($pwd==$db->query($password_query))
			{
			return true;
			}
		$db->close();
		}
	else
		{
		return false;
		}
	}
	
function kick_user_to_login()
	{
	kill_session();
	header('Location: login.php?retry');
	exit();
	}
	
function auth_user()
	{
	if(check_if_post())
		{
		bind_user_to_session();
		}
	if (!check_auth($_SESSION['username'],$_SESSION['password']))
		{
		kick_user_to_login();
		}
	}
###############################
?>
Gruß, Wucke

EDIT: Bei mir auf den heimischen PCs läuft des einwandfrei, bei meinem Freehoster 'kilu.de' krieg ich jedoch Fehler wegen der Header. Ich glaube, das könnte daran liegen, das der Freehoster Werbelayer über die eigentliche Seite legt, so dass der Header schon abgeschickt wird??? Die Fehler beim Header treten auf, wenn sich ausloggen will. Dafür muss man sich einloggen, ergo:
Username: admin
Passwort: 13
Link zum Hoster: http://www.kilu.de/
Link zu der Seite bei dem Hoster: http://glh.betrunken.org/login
EDIT 2: Das Problem Header sollte mit einer kleinen Funktion gefixt werden, bei Freehoster kommt es dennoch zu Fehlermeldungen (bezüglich der Session?)
Code:
function redirect_to($url)
	{
    if (!headers_sent())
		{    
        header('Location: '.$url);
        exit;
        }
    else
        {  
        echo '<script type="text/javascript">';
        echo 'window.location.href="'.$url.'";';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
        echo '</noscript>'; exit;
		}
	}

Geändert von wucke13 (14.07.2014 um 13:35:02 Uhr)
Mit Zitat antworten
 

Stichworte
anfänger, fehlersuche, 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
php mail funktion für laien Mayina PHP Grundlagen 2 03.08.2011 16:39:33


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:23:48 Uhr.


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


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