php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-01-2008, 20:12
Piremilok
 Registrierter Benutzer
Links : Onlinestatus : Piremilok ist offline
Registriert seit: Jul 2006
Beiträge: 95
Piremilok ist zur Zeit noch ein unbeschriebenes Blatt
Standard Maskierung von Sonderzeichen

Hallo,

mich hat eine zeitlang das Problem mit Magic_Quotes und der Sonderzeichenmaskierung beschäftigt.

Bei Magic_Quotes wird ja nur vor die "gefährlichen" Sonderzeichen ein Backslash (\) gestellt und mittels einer Überprüfung mit get_magic_quotes_gpc und stripslashes wieder entfernt.

Aber dann kam das Problem mit der Sonderzeichenmaskierung!
Wenn ich ein ein Feld Sonderzeichen wie <, >, ", ... eingebe, so wird ja aus z.B. ä ein &auml;.
Nur wenn ich das Ganze dann aus der Datenbank wieder auslas, war dann das Problem da, dass ich entweder &amp;auml; drannstehen hatte oder wenn ich alles vorher demaskiert habe, ich Probleme mit <, > und " bekommen habe, weil der Text danach einfach nicht mehr angezeigt wurde.

Als Lösung habe ich mir dann 2 Funktionen geschrieben:

PHP-Code:
function htmlin(&$string$replace false) {
  
$text $string;
  if( 
is_array($text) )
      foreach(
$text as $key => $value)
          
$text[$key] = htmlin($valuefalse);
  else
      
$text htmlentities($textENT_QUOTES'ISO-8859-15');
  
  if(
$replace$string $text;
  else return 
$text;
}

function 
htmlout(&$string$replace false) {
  
$text $string;
  
$chars get_html_translation_table(HTML_ENTITIESENT_QUOTES);
  
  if( 
is_array($text) )
      foreach(
$text as $key => $value)
          
$text[$key] = htmlout($value);
  else {
      
$text html_entity_decode($textENT_QUOTES'ISO-8859-15');
      foreach(
$chars as $char) {
        if( 
stristr($text$char) ) {
          
$text htmlout($text);
          break;
        }
      }
  }
  
  if(
$replace$string $text;
  else return 
$text;

htmlin maskiert z.B. Ähren --> &amp;Auml;hren
htmlout macht selbst aus &amp;amp;amp;Auml;hren wieder Ähren

Das Problem bei der Sache ist, dass ich jetzt feststellen musste, dass dadurch manche Scripte sehr sehr langsam werden und ich wollte euch fragen (ja, jetzt kommt endlich die Frage):


Wie löst ihr das Problem mit der Werteübergabe, Speicherung in der DB, dem Auslesen und wieder ausgeben in Formularfeldern?


Einerseits muss man sich vor SQL-Injections schützen, andererseits soll alles ganz normal angezeigt werden und auf jedem Server laufen!

Für Aufklärung wäre ich euch sehr dankbar.

gruß
Piremilok
Mit Zitat antworten
  #2 (permalink)  
Alt 11-01-2008, 00:45
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

magic_quotes off
Beim Einfügen in die DB mysql_real_escape_string()
Bei der Ausgabe htmlspecialchars()
Fertig.

Ich hab deinen Post jetzt nicht mal ganz gelesen, was auch immer du da machst, es ist viel zu kompliziert...
Mit Zitat antworten
  #3 (permalink)  
Alt 11-01-2008, 17:11
Piremilok
 Registrierter Benutzer
Links : Onlinestatus : Piremilok ist offline
Registriert seit: Jul 2006
Beiträge: 95
Piremilok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

was meinst du mit magi_quotes off?
Einfach mit set_magic_quotes_runtime(0) ganz oben im Script deaktivieren?
Muss ich dann nicht mehr stripslashes machen? Bzw. ab wann wirkt sich das aus? wie wirkt sich das aus?

Ich habe in meinen Scripten immer beides drinn:
PHP-Code:
//Magic-Quotes deaktivieren
@set_magic_quotes_runtime(0);
@
ini_set('magic_quotes_sybase''0'); 
Wenn du etwas in die MySQL-DB einspeicherst einfach mysql_real_escape. Das mache ich ja auch.

Und wenn du es aus der DB wieder ausliest machst du kein stripslashes()? Nur htmlspecialchars()?


Ich weiß, dass ich es zu kompliziert mache
Deswegen frage ich ja auch...


gruß
Piremilok
Mit Zitat antworten
  #4 (permalink)  
Alt 11-01-2008, 17:26
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Muss ich dann nicht mehr stripslashes machen?
Doch, musst du. Guck mal hier
Zitat:
Und wenn du es aus der DB wieder ausliest machst du kein stripslashes()? Nur htmlspecialchars()?
Wie er schon sagt, ja, nur htmlspecialchars
Mit Zitat antworten
  #5 (permalink)  
Alt 12-01-2008, 12:27
Piremilok
 Registrierter Benutzer
Links : Onlinestatus : Piremilok ist offline
Registriert seit: Jul 2006
Beiträge: 95
Piremilok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

habe das jetzt nochmal ausführlich getestet und ich weiß nicht, wie ich auf so einen Schmarrn gekommen bin!

Vielen herzlichen Dank für eure Hilfe.

-------------------------------------

Noch eine Verständnisfrage zu Magic_Quotes:
Ab wann greift es?

1. Ich deaktiviere magic_quotes ganz oben im Script mit
@set_magic_quotes_runtime(0);

2. Ich schicke über dieses Script ein Formular an selbiges ab (z.B. für Zwischenspeichern)

Sind die per GET oder POST übergebenen Daten nun maskiert oder nicht? Oder wie darf ich das verstehen?
Wann greift magic_quotes?

Ich glaub da steh ich grad momentan auf'm Schlauch und irgendwie hilft da auch kein Schritt zur Seite...


Derzeit sieht der Aufbau meiner globals.php noch so aus:
PHP-Code:
<?php
...

//Funktion um Slashes in Arrays zu entfernen
function stripslashes_array(&$array) {
  foreach(
$array as $key => $val) {
    if (
is_string($val)) $array[$key] = stripslashes($val);
    elseif (
is_array($val)) $array[$key] = stripslashes_array($val);
  }
  return 
$array;
}

//Slashs aus den übergebbaren Variablen entfernen, sofern Magic-Quotes aktiv
if (get_magic_quotes_gpc()) {
  if (
count($_REQUEST)) stripslashes_array($_REQUEST);
  if (
count($_POST)) stripslashes_array($_POST);
  if (
count($_GET)) stripslashes_array($_GET);
  if (
count($_COOKIE)) stripslashes_array($_COOKIE);
  if (
count($_SERVER)) stripslashes_array($_SERVER);
}

//Magic-Quotes deaktivieren
@set_magic_quotes_runtime(0);
@
ini_set('magic_quotes_sybase''0');

...
?>

Vielen Dank für Antworten...


gruß
Piremilok

Geändert von Piremilok (12-01-2008 um 12:30 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-01-2008, 13:39
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

magic_quotes != magic_quotes_runtime
Siehe Manual!

Und magic_quotes lässt sich *nur* über die php.ini setzen (oder über eine htaccess-Direktive, auf jeden Fall aber VOR dem Skript - steht auch afaik im Manual)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:45 Uhr.