Zurück   klamm-Forum > klamm-Lose > Lose4Scripts

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09.12.2008, 15:44:55   #31 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

@molleonline
und das ist 100% sicher ?
Habe gelesen das die funktion wen magic_qoutes off/on sind ... da dann was schieft läuft ?

Und was sagt ihr zu dem login ?
Habe nich in anderen scripts gesehen mit :

$_SESSION['username'] == true ;

Vlt. könnte sich auch flaschenkind nochmal melden ?!

danke
mfg
 
coderz ist offline Threadstarter   Mit Zitat antworten
Alt 09.12.2008, 16:38:36   #32 (permalink)
Neuer Benutzer

ID: 325475
Lose-Remote

Reg: 09.07.2007
Beiträge: 27
Standard

100% sicher ist nur, wenn du einen Computer abgeschaltet ohne Verbindung nach draußen in einem schweizer Tresor stellst (und selbst dann nicht)

Ne Spaß beiseite, die Funktion ist schon sicher.

Wenn du absolut keine Risiken eingehen willst, schau dir die Klasse mal an: http://de.php.net/manual/de/class.mysqli-stmt.php
Der Klasse übergibst du einen SQL String mit Platzhaltern und die Parameter (z.B. für LIKE, VALUES() etc.) einzeln. So kann die Klasse zwischen Benutzereingabe und SQL Anweisungen unterscheiden und SQL Injection ist somit unmöglich.

Bezüglich magic qoutes:
Dieses Feature ist veraltet und wird in PHP 6 sowieso verbannt.
Man sollte sich nicht auf solche Funktionen wie register_globals, safe_mode oder magic_quotes verlassen, sondern das Skript wirklich schon im Quellcode sichern.

Falls dein Server magic_quotes an hat und du das nicht ändern kannst, füge bei jedem Skript diesen Code am Anfang ein:
Zitat:
Zitat von http://de.php.net/manual/en/security.magicquotes.disabling.php
Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<?php if (get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } ?>
Gruß molleonline
 
molleonline ist offline   Mit Zitat antworten
Alt 09.12.2008, 16:44:31   #33 (permalink)
www.loseverkauf.de
Benutzerbild von Ista

ID: 70000
Lose-Remote

Reg: 20.04.2006
Beiträge: 720
Standard

Zitat:
Zitat von coderz Beitrag anzeigen
@molleonline
und das ist 100% sicher ?
Habe gelesen das die funktion wen magic_qoutes off/on sind ... da dann was schieft läuft ?
Am besten du bastelst dir einen Funktion die sowas macht:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
function escapeString($value) {
    if(!
get_magic_quotes_gpc()) {
        
$value mysql_real_escape_string($vaule);
    }

    return 
$value;

Aber wichtig wäre auch zu eruieren welcher Datentyp erwartet wird. Das Thema ist aber sehr groß und umfangreich am besten du ließt dich ein. Und 100% sicher kriegst du garnichts *gg*
Ista ist offline   Mit Zitat antworten
Alt 09.12.2008, 16:45:11   #34 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

Danke erstmal..
Habe es jetzt ausprobiert...
Mit dem bei spiel was du genannt hat funktioniert es bei mir nicht...
Habe jetzt vorher
$username = mysql_real_escape_string($username);
...
und dann halt meinen normalen quelltext..
Ist doch das gleiche oder ?

mfg
 
coderz ist offline Threadstarter   Mit Zitat antworten
Alt 09.12.2008, 16:51:36   #35 (permalink)
www.loseverkauf.de
Benutzerbild von Ista

ID: 70000
Lose-Remote

Reg: 20.04.2006
Beiträge: 720
Standard

Falls du PHP5 nutzten kannst (was ich dir sowieso raten würde) nimm diese Funktion : mysqli_stmt::bind_param

Ich denke das wird am einfachsten für dich sein da du dort direkt den erwarteten Datentyp festlegen kannst.
Ista ist offline   Mit Zitat antworten
Alt 09.12.2008, 17:14:43   #36 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

ja ich nutze php 5
Mhh..habe mal in anderen scripten gekuckt ... die benutzen auch nur mysql_real_escape_string
->Vms1 und Vms2

Warum benutzen die das wenn es nicht sicher oder zu umständlich ist ?

mfg
 
coderz ist offline Threadstarter   Mit Zitat antworten
Alt 09.12.2008, 17:34:21   #37 (permalink)
www.loseverkauf.de
Benutzerbild von Ista

ID: 70000
Lose-Remote

Reg: 20.04.2006
Beiträge: 720
Standard

Zitat:
Zitat von coderz Beitrag anzeigen
Warum benutzen die das wenn es nicht sicher oder zu umständlich ist ?
Weil die keine Ahnung haben

Nee Spass beiseite egtl. bietet mysql_real_escape_string schon ordentlich Sicherheit allerdings ist das eben so wie bei allen alten PHP-Funktion ala ich_kümmere_mich_um_alles_und_du_brauchst_nicht_drüber_nachdenken(). Es erfordert keinen Konsequenz des Programmierers und vorallem kein Verständnis für Sicherheit.

Auch kümmert sich diese Funktion lediglich um Strings. Du solltest dir aber immer in klaren sein was für ein Datentyp du denn jetzt gerne verwenden möchtest bzw. welchen du erwartest. Dieses Verständnis erfordert dies funktion eben nicht und somit wird eben alles mal durch mysql_real_escape_string gejagt ohne sich Gedanken zu machen welche Probleme ein anderer Datentyp mit sich bringen könnte. Das ganze funktioniert eben weil PHP so einen Larifari Programmiersprache ist, in anderen Programmiersprachen wird es dir da nicht so leicht gemacht. (Stichwort: "Strenge Typisierung")

Geändert von Ista (09.12.2008 um 17:35:34 Uhr)
Ista ist offline   Mit Zitat antworten
Alt 09.12.2008, 18:12:25   #38 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.531
Standard

Sonst guck mal nach queryf(), die gibts hier irgendwo im Forum, die ist auch sehr schön.
flaschenkind ist offline   Mit Zitat antworten
Alt 09.12.2008, 19:20:28   #39 (permalink)
www.loseverkauf.de
Benutzerbild von Ista

ID: 70000
Lose-Remote

Reg: 20.04.2006
Beiträge: 720
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Sonst guck mal nach queryf(), die gibts hier irgendwo im Forum, die ist auch sehr schön.
Also ich kenne diese Funktion nicht genau denke aber du meinst das hier .

Da es zu queryf keine ordentliche Doku gibt solltest du ihm die Duko zu sprintf() an die Hand geben sonst wird nämlich wieder alles mit '%s' formatiert was ja wieder voll am Ziel vorbeischießt.

Geändert von Ista (09.12.2008 um 19:21:26 Uhr)
Ista ist offline   Mit Zitat antworten
Alt 12.12.2008, 16:01:49   #40 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

Mhh...weiß nicht genau wie ich die jetzt verwenden soll...
Könnte einer mal die funktionen einbauen in das von mir gemachte script?

danke
mfg
 
coderz ist offline Threadstarter   Mit Zitat antworten
Alt 12.12.2008, 16:12:18   #41 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.531
Standard

Du fügst die Funtkion da ein und nutzt dann statt mysql_query mysql_queryf. Der Aufruf kann dann z.B. so aussehen:
PHP-Code:
1:
mysql_queryf("SELECT `foo` FROM `bar` WHERE `id`=%u AND `name`="%s"', $_GET['id'], $string); 
%u steht für unsigned Integer (vorzeichenlose Ganzzahl)
%d ist ein signeded Integer
%s ist ein String
Das sollten die wichtigsten sein, alle anderen findeste im Manual unter sprintf()

Die Werte davon werden dnan mti den Parametern ersetzt, die hinter die Query kommen.
flaschenkind ist offline   Mit Zitat antworten
Alt 12.12.2008, 16:18:23   #42 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

okay..danke
Du meinst die funktion von "thehacker" oder ?

Und das mit dem login ?!
Wie hättest du den realisiert ?
(da bin ich mir auch noch nicht sicher...)

mfg
 
coderz ist offline Threadstarter   Mit Zitat antworten
Alt 12.12.2008, 16:45:34   #43 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von Ista Beitrag anzeigen
Nee Spass beiseite egtl. bietet mysql_real_escape_string schon ordentlich Sicherheit [...]
Jup, aber wenn man falsch auf andere Zeichensätze stellt, dann wird die escape Funktion bei manchen Zeichensätzen ad absurdum geführt


Zitat:
Zitat von Ista Beitrag anzeigen
Auch kümmert sich diese Funktion lediglich um Strings. Du solltest dir aber immer in klaren sein was für ein Datentyp du denn jetzt gerne verwenden möchtest bzw. welchen du erwartest. Dieses Verständnis erfordert dies funktion eben nicht und somit wird eben alles mal durch mysql_real_escape_string gejagt ohne sich Gedanken zu machen welche Probleme ein anderer Datentyp mit sich bringen könnte. Das ganze funktioniert eben weil PHP so einen Larifari Programmiersprache ist, in anderen Programmiersprachen wird es dir da nicht so leicht gemacht. (Stichwort: "Strenge Typisierung")
prinzipiell hast du ja Recht, mir fällt nun aber wirklich kein Datentyp als Beispiel ein, bei dem es Probleme macht.
Es seidenn bei Ints/Floats in der Exponentialschreibweise (daraus wird dann ja ein String) und MySQL angewiesen wird, dies nicht in eine Zahl umzuwandeln, bin aber gerade gar nicht sicher ob es eine Option dafür gibt, denn der normale Strict Mode deckt diese Einschränkung glaube ich nicht mit ab.


Als Beispiel verwendet Zend_Db (wenn keine Prepared Statements zur Verfügung stehen) selbst das normale Escapen der Db-Funktionen, wendet es aber nur auf Strings an, das ist denke ich eine deutlich bessere Methode als einfach alles durchzujagen. Mit nem is_string ist das ja kein Problem
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de

Geändert von ice-breaker (12.12.2008 um 16:46:48 Uhr)
ice-breaker ist offline   Mit Zitat antworten
Alt 12.12.2008, 17:36:06   #44 (permalink)
www.loseverkauf.de
Benutzerbild von Ista

ID: 70000
Lose-Remote

Reg: 20.04.2006
Beiträge: 720
Standard

@ice-breaker
Ich meinte welchen Datentyp die Datenbank erwartet.

Bsp.:
Code:
1:
'UPDATE konto = konto + %s WHERE id = %s'
In so einem Statement hat sich keiner Gedanken gemacht welcher Datentyp erwartet wird und bietet somit ein großen Angriffsfläche

Ich hoffe ich konnte nun deutlich machen was ich meine mit: „sich gedanken über den Datentyp zu machen“.

Ja es gibt solche leute ich hab sogar schon ganz andere Anwendungen von so einer Funktion gesehen

PHP-Code:
1:
mysql_querf('SELECT * FROM Tabbelle WHERE id ='.$id
Ista ist offline   Mit Zitat antworten
Alt 12.12.2008, 17:58:35   #45 (permalink)
Neuer Benutzer

ID: 335757
Lose-Remote

Reg: 07.12.2008
Beiträge: 22
Standard

mhh..danke erstmal
aber meine frage wurde hier leider immer noch nicht richtig beantwortet...:/

Ich frage mich immer noch was jetzt die beste Lösung wäre ?!
(und wie ich diese Funktion von thehacker jetzt auf mein script übertragen kann..)
Und ob das wirklich nötig ist, alles ? Da ja VMS2 z.B. auch nur mysql_real_escape_string() benutzt... und das bestimmt nicht unsicher ist ... sonst wären ja schon exploits oder ähnliches vorhanden...

Also kann jetzt mal einer klartext sprechen ?

danke
mfg coderz


EDIT: Habe es mal so probiert... müsste eig richtig sein ?!
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
<?php
include("admin/zugriff.inc.php");
function 
mysql_queryf()
{
    
$args    func_get_args();
    
$query   array_shift($args);
    
$args    array_map('mysql_real_escape_string'$args);
    return 
mysql_query(vsprintf($query$args));
}  
?>
<form action="index.php" method="post">
<input  type="text" name="id">
<input type="submit" name="submit" value="Test">
</form>
<?php
if(isset($_POST["submit"])){
    
$id $_POST["id"];
    
$abfrage mysql_queryf("SELECT username FROM user WHERE id=%u" ,$id);
    
$row mysql_fetch_object($abfrage);
    
$username "$row->username";
    echo 
"<p>Username: $username <br/>";
    }
?>
 

Geändert von coderz (13.12.2008 um 00:55:39 Uhr)
coderz ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Biete .exe programmierung O-N-N-Y Lose4Scripts 13 11.10.2008 12:49:19
[PHP] Kostenlose programmierung für euch! M3Y3R Programmierung 18 14.07.2007 13:13:15


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