Sicherheit in diesem PHP Script
Nick
- php
Hallo,
ich habe ein Problem. Bei der Analyse der Software die ich für einen Kunden installieren soll ist mir folgendes Aufgefallen:
@file('http://www.elitius.com/updates.php');
$check_sum = get_checksum('www.google.com');
$cron_pr_perl = ('6340563836' == $check_sum) ? 0 : 1;
Gesamtcontext siehe unten. Ich bin mir nicht sicher aber werden hier nicht die MYSQL-Daten weitergereicht an einen Dienstleister der das garnicht wissen soll?
/** This will NOT report uninitialized variables **/
error_reporting (E_ALL ^ E_NOTICE);
/** Disable Magic Quotes runtime**/
set_magic_quotes_runtime(0);
$script_path = str_replace('install', '', dirname($_SERVER['PHP_SELF']));
$filename = '../includes/config.inc.php';
require_once('../util.php');
$step = (int)$_GET['step'];
if ($_POST['db_action'])
{
$tmp = $_POST;
$base = (strlen($script_path) > 1) ? str_replace($script_path, '',$tmp['script_path']) : $tmp['script_path'];
$base = trim($base, '/');
$path = $tmp['path'];
if (!$_POST['dbhost'])
{
$err[] = 1;
}
if (!$_POST['dbuser'])
{
$err[] = 2;
}
if (!$_POST['dbname'])
{
$err[] = 3;
}
if (!$_POST['admin_username'])
{
$err[] = 4;
}
if (!$_POST['admin_password'])
{
$err[] = 5;
}
if ($_POST['admin_password'] != $_POST['admin_password2'])
{
$err[] = 6;
}
if (!valid_email($_POST['admin_email']))
{
$err[] = 7;
}
if (!$err)
{
$link = @mysql_connect($tmp['dbhost'], $tmp['dbuser'], $tmp['dbpwd']);
@file('http://www.elitius.com/updates.php');
$check_sum = get_checksum('www.google.com');
$cron_pr_perl = ('6340563836' == $check_sum) ? 0 : 1;
if(!$link)
{
$error = true;
$msg = 'Could not connect to MySQL server: '.mysql_error().'<br />';
Hi,
Ich bin mir nicht sicher aber werden hier nicht die MYSQL-Daten weitergereicht an einen Dienstleister der das garnicht wissen soll?
ja, hier werden nicht die MySQL-Daten weitergereicht. Wohlgemerkt kann ich nicht wissen, was get_checksum() macht; aber bei einem HTTP-Request (selbst wenn er über file() stattfindet) werden keine Daten übertragen, die mit HTTP nichts zu tun haben, es sei denn natürlich, man gibt sie explizit dazu an.
Cheatah
echo $begrüßung;
@file('http://www.elitius.com/updates.php');
Diese Zeile macht für das Script effektiv nichts. Sie erzeugt einen Request, deren Ergebnis nirgendwo hinterlegt wird und damit sogleich wieder verloren ist. Allerdings ist diese Ressource anscheinend auch nicht vorhanden (404er).
Gesamtcontext siehe unten.
Meiner Meinung nach sieht das sehr nach Anfänger aus, aber egal.
Ich bin mir nicht sicher aber werden hier nicht die MYSQL-Daten weitergereicht an einen Dienstleister der das garnicht wissen soll?
Wenn du dir nicht sicher bist, was bei einem Request weitergereicht wird, dann untersuch das doch. Letzten Endes kann man als Außenstehender nur sagen: "Normalerweise passiert ...", doch was tatsächlich geschieht kann man nur sagen, wenn man es sich ansieht. Wenn der Request aus einem Browser kommt gibt es Extensions, die behilflich sein können (z.B. livehttpheaders für Firefox). PHP kann man nicht so einfach über die Schulter schauen. Hier bleibt wohl nur, den Netzwerkverkehr zu analysieren, z.B. mit WireShark. Allerdings muss man sich hier etwas einarbeiten, damit man die richtigen Pakete "aus dem Verkehr ziehen kann", und sie auch auszuwerten versteht. Alles in allem aber nicht soo schwierig.
echo "$verabschiedung $name";