php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.11.2006, 11:57  
Gast
 
Beiträge: n/a
Standard Bitte Funktion uns Filter prüfen. Danke!

Da ich mir das selber ausgedacht habe, bitte ich zu prüfen . bzw. um Meinungen:

Code:
#Filter

foreach($_POST as $field => $cont) {
$cont=strip_tags($cont,"
,

,<a>,[b],<hr>,[*],<ul>,<div>,[i],<img>");
$cont=nl2br($cont);
$cont=preg_replace ("[a-zA-Z0-9]", "1", $cont);
$cont=sprintf("%s", mysql_escape_string($cont));
$cont=str_replace("'", "-", $cont);
$cont=str_replace("|", "-", $cont);
$cont=str_replace("\", "", $cont);
$_POST["$field"]=$cont;
}

# automatischer Query

foreach($_POST as $field => $cont) {
if($cont){
if(($field=="edit")
or($field=="akzept")
or($field=="seite")
or($field=="id")){}else{ $up_cont .=" $field='$cont',"; }}}
mysql_query( "UPDATE mandant SET $up_cont editdatum='$datum' WHERE id='".mysql_real_escape_string($_POST['id'])."'" ) or die( "eigene Fehlerbeschreibung" );
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.11.2006, 12:02  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

ich würd in solche Variablen NIE schreiben ...

$_POST, $_GET, etc ... sind bei mir reine readonly Variablen .. nur mal so auf den ersten Blick ...
M3g4Star ist offline  
Alt 28.11.2006, 12:10  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wofür soll der Filter gut sein? Warum benutzt du bei strip_tags() nur ein paar HTML Tags?
Warum
$cont=sprintf("%s", mysql_escape_string($cont));
da reicht doch einfach
$cont = mysql_escape_string($cont);
übrigens ist die Funktion veraltet und sollte mit mysql_real_escape_string(); ausgetauscht werden.

Wofür der ganze Filter? Um irgendetwas in die Datenbank zu speichern reicht es normalerweise mit mysql_real_escape_string() den String vor SQL Injection zu sichern.

strip_tags() und Co sollte erst verwendet werden wenn du den Eintrag wieder aus der Datenbank ausliest.

Genauso sinnlos ist es bei deinem if ($cont { if ( ... jeden Vergleich in Klammern zu schreiben. Außerdem ist if (...) {} else { tu was } auch etwas seltsam warum verwendest du nicht
PHP-Code:
<?php
$fields 
= array('edit','akzept','seite','id');
if (
$cont AND !in_array($cont$fields)) {
    
$up_cont .= $field."='".$cont."',";
}
?>
Dann deine WHERE Klausel mit der id = ... solltest du auch anders machen.
Die ID wird ja wohl eine Zahl sein daher check sie ob sie eine ist und dann schreib sie ins Query ohne ' ' und ohne mysql_real_escape_string();
Flor1an ist offline  
Alt 28.11.2006, 17:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Dann deine WHERE Klausel mit der id = ... solltest du auch anders machen.
Die ID wird ja wohl eine Zahl sein daher check sie ob sie eine ist und dann schreib sie ins Query ohne ' ' und ohne mysql_real_escape_string();
Besser explizite Umwandlung mit (int) verwenden.

Deinen reg. Ausdruck fehlen die Delimiter

Was soll diese Funktion überhaupt machen, alle alphanums zu einer 1, als Hochkommata zu - ? Deine Frage ist sehr dürftig, weil sie diese Infos vorenthält.
nikosch ist offline  
Alt 28.11.2006, 19:01  
Gast
 
Beiträge: n/a
Standard

Danke für die schnellen Antworten, ich schreibe mal dazwischen:

Zitat:
$_POST, $_GET, etc ... sind bei mir reine readonly Variablen .. nur mal so auf den ersten Blick ...
Das verstehe ich nicht. Ich habe gelernt das die Variabel-Übergabe
so sicherer ist. Außerdem werden diese so besser in funktionen übernommen.

Zitat:
Wofür soll der Filter gut sein? Warum benutzt du bei strip_tags() nur ein paar HTML Tags?
Der Content ist Inhalt einer Webseite und da möchte ich nicht alles erlauben.

Zitat:
1.) da reicht doch einfach
$cont = mysql_escape_string($cont);
2.) übrigens ist die Funktion veraltet und sollte mit mysql_real_escape_string(); ausgetauscht werden.
1.) dann funkt der n12br besser ohne:
\r\n
2.) kann ich erst nutzen wenn die Datenbank offen ist.
Da der erste Abschnitt in einer anderen Datei ist, funkt das nicht.

Zitat:
$fields = array('edit','akzept','seite','id'); ......
Genial das mache ich!

Zitat:
1.)Besser explizite Umwandlung mit (int) verwenden.
2.)Deinen reg. Ausdruck fehlen die Delimiter
1.) ?????
2.) Wofür Trennzeichen?

Zitat:
$cont=preg_replace ("[a-zA-Z0-9]", "1", $cont);
Das kann wohl weg.

Nochmals Danke!!

Gruß
Michael Tyssen
 
Alt 28.11.2006, 19:26  
Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 86
Ricochet
Standard

Zitat:
Zitat von Tyssen
Danke für die schnellen Antworten, ich schreibe mal dazwischen:

Zitat:
$_POST, $_GET, etc ... sind bei mir reine readonly Variablen .. nur mal so auf den ersten Blick ...
Das verstehe ich nicht. Ich habe gelernt das die Variabel-Übergabe
so sicherer ist. Außerdem werden diese so besser in funktionen übernommen.
Das ist deswegen unsicher, weil jeder user in die GET und POST variablen schreiben kann was er will. Ich sag nur SQL injections. (unbeding googlen)

Zitat:
Zitat von Tyssen
Zitat:
Wofür soll der Filter gut sein? Warum benutzt du bei strip_tags() nur ein paar HTML Tags?
Der Content ist Inhalt einer Webseite und da möchte ich nicht alles erlauben.
Ich schätze RaZoR wollte wissen warum du nicht gleich ALLE (html)tags , z.B. mit strip_tags(), löschst.
__________________
Tabellenlayouts sind out, Browsergames sind schei$$e und die Erde ist eine Scheibe.
Ricochet ist offline  
Alt 28.11.2006, 19:39  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

$_POST, $_GET sollst du schon verwenden! Megastar meinte nur dass du diese Variablen nur auslesen sollst aber nicht schreiben, also nicht den Inhalt verändern oder so! Mag seine Vorteile haben! Gegen SQL Injections schützt du dich ja dass ist gut!

nl2br() solltest du erst verwenden wenn du den Text aus der Datenbank ausliest, sonst hast du was falsch gemacht.

Zum strip_tags(), ich hab erst etwas verwechselt ich dachte das nur die angegebenen Tags gelöscht werden. Aber auch auch wenns andersrum ist, du solltest nie HTML erlauben außer du kannst davon ausgehen dass HTML nur von Admins oder Moderatoren gepostet werden bei dennen du sicher gehen kannst das sie Ahnung davon haben.
Verwende lieber BBCode!

Warum kannst du die Datenbankverbindung nicht öffnen bevor du die Funktion brauchst? Also Das dürfte doch eigentlich kein Problem sein!

Was bringt es dir ' | \ zu löschen/ersetzen??
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline  
Alt 28.11.2006, 19:40  
Gast
 
Beiträge: n/a
Standard

Zitat:
Das ist deswegen unsicher, weil jeder user in die GET und POST variablen schreiben kann was er will. Ich sag nur SQL injections. (unbeding googlen)
Darum filter ich doch mit $cont=sprintf("%s", mysql_escape_string($cont));
 
Alt 28.11.2006, 19:45  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja du hast Recht! Also das mit GET, POST hat Ricochet glaub ich etwas anders aufgenommen. Also das ist nicht dein Problem, du filterst SQL Injections schon raus.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline  
Alt 28.11.2006, 19:51  
Gast
 
Beiträge: n/a
Standard

Zitat:
Warum kannst du die Datenbankverbindung nicht öffnen bevor du die Funktion brauchst? Also Das dürfte doch eigentlich kein Problem sein!
Ich hab eine Datei, mit den wichtigsten Funktionen die ich durch alle sogenannte Arbeitsdateien durchschleuse. Ich kann die Datenbank ja nicht zweimal öffnen. Einige Arbeitsdateien brauchen keine offene Datenbank.
 
 


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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Funktion, die Default-Wert für NULL setzt Zergling-new Datenbanken 3 13.11.2006 22:54
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Variablen in eine Funktion übernehmen PHP Tipps 2005 1 26.02.2005 17:19
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
get php überprüfen ohne mysql_real_escape_string, filter funktion testen, wofür ist der zigarettenfilter gut?, ersetzen filter mysql_real_escape, mit mysql_real_escape_string überprüfen, prüfen post php eine beliebige, funktion des zigarettenfilters, sql injections reicht strip tags, mysql_escape_string probleme html tags, html readonly variable, php function übergabe prüfen, php get variablen überprüfen sql injection, funktion der filter, wie kann ich die funktion von mysql_real_escape_string überprüfen, wie kann ich die funktion mysql_real_escape_string überprüfen, sql injection php $_get readonly, tiefpassfilter prüfen, mysql_real_escape_string $_post prüfen, php class sql injection filter

Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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.