mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 13:01 Benutzername: Passwort: Auto-Login

Thema: [php] Effektive Verschlüsselung? vom 30.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] Effektive Verschlüsselung?
Seite: 1, 2  Weiter
Autor Nachricht
phpler
Threadersteller

Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 30.06.2007 11:22
Titel

[php] Effektive Verschlüsselung?

Antworten mit Zitat Zum Seitenanfang

Hi!

Ich habe hier einen Code um einen QueryString zu verschlüsseln bzw. wieder zu entschlüsseln und wollte mal die Erfahrenen Programmierer hier fragen, ob diese Art von Sicherung so gut ist bzw. was ich noch verbessern könnte.
Was mir zu bedenken gibt ist die for-Schleife...wenn es viele aktive User gibt und das Skript recht häufig aufgerufen wird, wie sieht es dann mit der Perfomance aus? Wäre für jeden Tipp dankbar!

Code:

   function encode($string)
   {
      $secString = md5("geheim");
      $length = strlen($string);
      $pos = rand(0,$length);
      $string = base64_encode($string);
      for($i=0;$i<=$length;$i++)
      {
         if( $i == $pos )
         {
            $secured .= $secString.$string[$i];
         }
         else
         {
            $secured .= $string[$i];
         }
      }
      return $secured;
   }
   function decode($string)
   {
      $secString = md5("geheim");
      if( strstr( $string, $del_sec ) )
      {
         $string = str_replace($secString,"",$string);
         $string = base64_decode( $string );
         $string = explode(";",$string);
         foreach( $string as $s )
         {
            $pre = explode("&",$s );
            foreach( $pre as $p )
            {
               $t = explode("=",$p);
               $data[$t[0]] = $t[1];
            }
         }
         return $data;
      }
      else
      {
         return FALSE;
      }
   }
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Sa 30.06.2007 13:57
Titel

Antworten mit Zitat Zum Seitenanfang

Also Performance-technisch gesehen, ist sowas kein Problem.
Auch deine Schleife stellt kein Problem dar.

Aber warum willst du den Query-String denn überhaupt verschlüsseln?
Eventuell solltest du die Sache ganz anders angehen.

Wenn du nicht willst, daß die übergebenen Parameter in der Browser-History auftauchen oder für andere sichtbar sind, dann solltest du die Daten nicht per GET, sondern per POST übergeben.

Wenn du diese Daten dann noch verschlüsselt haben willst, dann solltest du sie über eine sicherere Verbindung per SSL übertragen.

Und den Sinn deiner Funktionen kann ich nicht so recht erkennen...
Was soll denn das für eine Verschlüsselung sein?
Das ist ja nichts, was besonders sicher wäre...
Auch kann ich den Sinn des md5-Hashes da drin nicht wirklich erkennen...
Warum das?

Wenn du diesen Weg gehst, dann könntest du mit den mcrypt-Funktionen von PHP arbeiten.
Da sind wirklich gute Verschlüsselungsalgorithmen (z.B. Rijndael, also AES) implementiert. Damit könntest du sicher verschlüsseln; mit deinen Funktionen da nicht.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
SPL1FFSTAR

Dabei seit: 04.06.2007
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 30.06.2007 16:31
Titel

Antworten mit Zitat Zum Seitenanfang

RSA ? :_D
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Sa 30.06.2007 18:22
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
RSA ? :_D

RSA würde ich nicht empfehlen:
Zitat:
RSA ist im Vergleich zu 3DES, AES und SHA-1 um mindestens einen Faktor 1.000 langsamer.

Quelle: RSA-Kryptosystem (Wikipedia)
Außerdem: RSA ist symmetrische Verschlüsselung, während z.B. AES asymmetrisch ist.
Ich würde AES einsetzen: Schnell, frei verfügbar, keine Lizenzgebühren, unter den sichersten Verfahren.

Die Mcrypt-Funktionen von PHP bieten die Möglichkeit, verschiedenen Verschlüsselungsalgorithmen zu arbeiten.
Blowfish wäre Default.
Von DES würde ich in jedem Fall abraten.
TripleDES macht's nicht viel besser (Drei mal Null bleibt auch Null).
Twofish, IDEA, CAST, SaferPlus, LOKI97, ... Da steht 'ne Menge zur Verfügung...
Rijndael ist AES. Das bevorzuge ich meist.
  View user's profile Private Nachricht senden
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Sa 30.06.2007 19:04
Titel

Antworten mit Zitat Zum Seitenanfang

Ich sehe immernoch keinen Sinn darin, einen Querystring zu verschluesseln.
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst So 01.07.2007 00:33
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Ich sehe immernoch keinen Sinn darin, einen Querystring zu verschluesseln.

Ja, ich auch nicht. Darum habe ich ja gefragt, warum der unbedingt verschüsselt sein soll.
Wenn die übergebenen Daten nicht in der Browserhistory gespeichert werden sollen, dann würde ich sie per POST übergeben.
Und ansonsten wäre es in den meisten Fällen sicherlich sinnvoller, wenn man eine verschlüsselte Verbindung über SSL einsetzt.
  View user's profile Private Nachricht senden
phpler
Threadersteller

Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst So 01.07.2007 06:28
Titel

Antworten mit Zitat Zum Seitenanfang

Hi und danke erstmal für eure Antworten.

Also warum ich den Query-String verschlüsseln will ist folgender: Ich arbeite gerade an einem Browsergame und finde das man mit einem Query-Sting schon jede Menge blödsinn anstellen kann, bzw. möglicherweise zum Betrug verführt.

Jetzt habe ich mir überlegt das es eine einfach Base64-Kodierung nicht reicht...vielleicht probiert das ja einer aus, kann dann einen eigenen Query erstellen und einfach mit Base64-Kodieren. Deshalb habe ich einfach einen MD5-String eingebaut und zwar immer an einer anderen Position, damit man diesen nicht so leicht erkennt. Ohne diesen kann man auch nicht, bzw. denke ich das, den String entschlüsseln.

So wie ich das sehe ist mcrypt aber third-party-tool oder? Ich weiß nicht ob das jeder Hoster zur Verfügung stellt oder nachträglich für mich installiert.

Für weitere Lösungsvorschläge bin ich jederzeit zu haben. Danke
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst So 01.07.2007 10:53
Titel

Antworten mit Zitat Zum Seitenanfang

phpler hat geschrieben:
Also warum ich den Query-String verschlüsseln will ist folgender: Ich arbeite gerade an einem Browsergame und finde das man mit einem Query-Sting schon jede Menge blödsinn anstellen kann, bzw. möglicherweise zum Betrug verführt.

Deswegen sollte deine Anwendung intern so programmiert sein, dass da nichts passieren kann.
Den Query-String zu verschlüsseln ist nur die Kaschierung schlechter und unsicherer Programmierung.

Nenn doch mal ein Beispiel, wo deine Nutzer etwas manipulieren könnten.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen SSL Verschlüsselung
Verschlüsselung/Kopierschutz für PHP
Plattform & Sprachenunabhängige Verschlüsselung
Die Hyper-Verschlüsselung einer ganzen Webpräsenz
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.