php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.05.2005, 23:00  
Erfahrener Benutzer
 
Registriert seit: 14.12.2003
Beiträge: 211
pit62
Standard

Bin mir nicht Sicher ob der Angreifer aufgehört hat meine DB zu sabotieren oder ob mysql_real_escape_string() und addslashes()
geholfen haben. Wenn einer mal versuchen könnte was zu löschen oder zu änder (


Zitat:
Sakuraiel
Nehmen wir mal an, du hängst folgendes bei dir an die URL :

'; --

Dann wird aus deinem SQL, was du mal eventuell hattest das hier:
UPDATE table SET a='irgendwas' WHERE b='urlwert'; --' AND c='wasanderes';
mysql nimmt jetzt als Befehl nur noch
UPDATE table SET a='irgendwas' WHERE b='urlwert';
und ignoriert den rest.
Wenn du zwischen das ; und das -- noch einen anderen Befehl anhängst wie z.b. TRUNCATE table - kann es dazu kommen, das die Tabelle vollständig gelert wird.
Ich krige da einfach nichts mit hin.
pit62 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.05.2005, 23:23  
Erfahrener Benutzer
 
Registriert seit: 14.12.2003
Beiträge: 211
pit62
Standard

es war leider noch immer nichts d.h. die Daten sind immer noch bzw. wieder wech.
pit62 ist offline  
Alt 19.05.2005, 23:52  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von pit62
es war leider noch immer nichts d.h. die Daten sind immer noch bzw. wieder wech.
Schau dir mal deine Logfiles an ob da Zugriffe á la script.php?paramter=boeses_SQL oder andere Auffälligkeiten sind....
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 19.05.2005, 23:56  
Gast
 
Beiträge: n/a
Standard

Komm lieber mal an deinen Code ran - dann kann man eventuell eher sehen, was faul ist.
 
Alt 20.05.2005, 01:10  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

ich mein, geh doch auf nummer sicher und verkrypte ihn vorher mit dem zend-encoder ?
dann kann ihn keiner lesen :P
robo47 ist offline  
Alt 24.05.2005, 23:05  
Erfahrener Benutzer
 
Registriert seit: 14.12.2003
Beiträge: 211
pit62
Standard

habe mir mal versucht einen Kopf zu machen, was ich falsch gemacht habe und habe auch n´bissel
nachgelesen und festgestellt, dass ich meine Eingabedaten nicht bzw. nicht ausre*chend validiert habe.
Somit habe ich mir eine - class checkit - aufgebaut (auch mit hilfe versch. anderer scripts) und bin nun wieder
an einem für mich nicht lösbarem Problem angekommen.
ich überprüfe hier Name,Herkunft,EMail,Homepage und Kommentar. Bis auf die Homepage-Url funzt auch alles.
Kann mir jemand verklickern, wie diese Function
Code:
  function isUrl($str,$mustfilled=false) 

  {// ^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$

    return (checkit::check($str,

                  '#^[h^t^t^p]+'.
	          '://'.
		  '[-!\#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
		  '[-!\#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$#',
		  $mustfilled));

  }
richtig wäre. Mögliche Eingeaben sollen natürlich alle Endungen de net com usw. sein sowie nur http:// !
Ich krig das einfach net richtig hin
Code:
$inputerror = false; 
include("checkit.php"); 
  if (!checkit::isAlpha($_POST['nname'],true)) {$inputerror[] = "Name";} 
  if (!checkit::isAlpha($_POST['herkunft'])) {$inputerror[] = "Herkunft";} 
  if (!checkit::isEMail($_POST['email'],true)) {$inputerror[] = "EMail";} 
  if (!checkit::isURL($_POST['hpage'],true)) {$inputerror[] = "Homepage";} 
  if (!checkit::filled($_POST['kommentar'])) {$inputerror[] = "Kommentar";} 
  if ((count($inputerror) == 1) && ($inputerror)) { 
      $error_msg="<font size=\"4\" color=\"#ff0000\">[b]Feld $inputerror[0] kontrollieren!</font></td></tr>"; 
  } else if (count($inputerror) > 1) { 
    $error_msg = "<font size=\"4\" color=\"#ff0000\">Felder: "; 
    $error_msg.= "".implode(", ",$inputerror). " kontrollieren!</font></td></tr>";      
  }
Code:
<?php 
// checkit.php 
class checkit { 

  function filled($str) 
  { 
    return (strlen(trim($str)) > 0); 
  } 

  function check($str,$pattern,$mustfilled=false) 
  { 
    if (checkit::filled($str)) 
    { 
      $result = (preg_match($pattern,$str)); 
    } 
    else 
    { 
      $result = (!($mustfilled)); 
    } 
    return $result; 
  } 

  function isAlpha($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/^[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝÞß*áâãäåæçèéêëì*îïðñòóôõöøùúûüýþÿ\. ,-]+$/",$mustfilled)); 
  } 

  function isNum($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/^\d+$/",$mustfilled)); 
  } 

  function isAlphaNum($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/^[a-zA-Z0-9ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝÞß*áâãäåæçèéêëì*îïðñòóôõöøùúûüýþÿ\. ,-]+$/",$mustfilled)); 
  } 
  function isNoHTML($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/^[^<>\"]+$/",$mustfilled)); 
  } 

  function isSomeText($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/[a-zA-Z]+/",$mustfilled)); 
  } 

  function isPhone($str,$mustfilled=false) 
  { 
    return (checkit::check($str,"/^[0-9\+][0-9\(\) -]+$/",$mustfilled)); 
  } 

  function isEmail($str,$mustfilled=false) 
  { 
    return (checkit::check($str, 
                '#^[-!\#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. 
                '@'. 
                '[-!\#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'. 
                '[-!\#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$#', 
      $mustfilled)); 
  } 

  function isURL($str,$mustfilled=false) 
  { 
// http://.+\..+$/i 
// z.B. http://www.test.de oder http://test.de 
    return (checkit::check($str, 
      '#^['*+^_`http://.'{|}~]+'. 
      '[*+\\./\..]+$/i#',$mustfilled)); 
  } 
} 
?>
pit62 ist offline  
Alt 25.05.2005, 08:19  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

http://www.regexlib.com/Search.aspx?k=url
__________________
Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
Mark Twain
Igäl ist offline  
Alt 25.05.2005, 10:10  
Erfahrener Benutzer
 
Registriert seit: 14.12.2003
Beiträge: 211
pit62
Standard

Genau das hab ich gesucht!
__________________
Wer behauptet, dass er weiß, dass er nichts weiß, weiß nicht, dass er nicht einmal halb so weise ist, wie er es behauptet...
pit62 ist offline  
Alt 25.05.2005, 13:03  
Gast
 
Beiträge: n/a
Standard

Ich machs mal öffentlich, damit Andere auch was davon haben.

1. index.php: ganz oben, bevor das HTML kommt:
PHP-Code:
<?php

###################

define('HOME'"Anfang.php"); # Konstanten sind besser geeignet
define('ROOT'dirname(__file__) . '/'); # Pfad zu diesem Script

$wert = (isset($_GET['wert'])) # $wert enthält den kompletten Pfad zur Datei
    
ROOT basename(trim($_GET['wert']));
    : 
ROOT HOME;

if (! 
is_readable($wert)) # Test, ob die Datei existiert
    
die ('invalid request');

require_once(
'./cfg.php'); # require nehmen. Dann bricht das Sript ab, wenn die Datei nicht existiert.

// für Counter und  Banneranzeige 
$ip $_SERVER["REMOTE_ADDR"]; # getenv() ist da Zeitverschwendung

# Input escapen

if (! get_magic_quotes_gpc()) # wenn magic_quotes_gpc nicht gesetzt ist
{
    
$_GET['u_men'] = mysql_escape_string($_GET['u_men']);
}

# .... HTML
?>
Ganz wichtig: der Link auf das Auswertungsscript muß so gebastelt werden:
PHP-Code:
<?php

/*******************************************************************
 Vote-Button (88x31) */
        
printf('<a href="http://pcwagner.fanforum-deutschland.de/index.php?wert=HpdM/hpdm.php?stimmen=%s" target="_top"> 
 [img]http://homepages.compuserve.de/pit621/Butons/hpdmbutton.gif[/img]</a>'
     
rawurlencode($hp); # URL kodieren!
 
/******************************************************************/
?>
Sonst kann man Dir ein Kuckuksei unterschieben.

Das Auswertungsscript gucke ich mir heute noch mal genauer an.
 
Alt 25.05.2005, 17:36  
Erfahrener Benutzer
 
Registriert seit: 14.12.2003
Beiträge: 211
pit62
Standard

Erst einmal danke an Mikel, der sich die Zeit genommen hat sich mal durch meinen Code-Dschungel durchgewuselt hat! Werde ich mir als anfänglichen Denkanstoß zu Herzen nehmen!


habe o.g. Problem so gut wie möglich (dank Igäl´s Tipp) gelöst
Code:
function isUrl($str,$mustfilled=false) 
    return (checkit::check(
$str, '#^((ht|f)tp(s?))(:((\/\/)(?!\/)))(((w){3}\.)?)(([a-zA-Z0-9\-_]+\.)?)([a-zA-Z0-9\-_]+(\.de|de\.vu|pl|fr|ru|com|edu|gov|int|mil|net|org|biz|info|name|pro|museum|co\.uk)))((\/)?(?!\/))(([a-zA-Z0-9\-_\/]*)?)(([a-zA-Z0-9]\.(jpg|jpeg|gif|png|php((3|4|5)?)([\?A-Za-z0-9\:\/\.\=\&]*)|cgi(([a-z0-9\/\.\?\=\&]*)?)|txt|htm(l?)|pdf))?)+$#', $mustfilled));
}
__________________
Wer behauptet, dass er weiß, dass er nichts weiß, weiß nicht, dass er nicht einmal halb so weise ist, wie er es behauptet...
pit62 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$mustfilled php, checkit.php, checkit::isemail

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.