Frage

Ich entwickle eine PHP-Anwendung Aufträge für ein Unternehmen zu verwalten. Um eine Bestellung zu sehen ist die URL zur Zeit /orders/view/3502.

Ich mag nicht die Bestell-ID-Nummer in der URL angezeigt werden, so dass ich CodeIgniter die Encrypt-Bibliothek verwendet, um die ID in der URL zu verschlüsseln. Die URL (nach der Verschlüsselung) sieht aus wie /orders/view/AaffGdQQ.

Das Problem, das ich habe, ist manchmal die verschlüsselte ID enthält einen Schrägstrich oder ein Pluszeichen, die, wenn sie in einer URL nicht korrekt funktionieren. CodeIgniter die URL auf Schrägstriche basierend liest, so, wenn die verschlüsselte ID einen Schrägstrich hätte, wäre es, dass als 2 Variablen lesen, nicht ein. Auch Pluszeichen als Leerzeichen in URLs interpretiert werden.

Also, meine Frage ist, wie kann ich die ID und sicher sein, zu verschlüsseln, dass die Zeichenfolge nicht ein Pluszeichen oder einen Schrägstrich enthält?

EDIT: Ich hatte eine Idee, um zu sehen, ob die verschlüsselte ID einen Schrägstrich oder Pluszeichen enthalten ist, und wenn es wieder getan hat, verschlüsseln. Aus irgendeinem Grund wird jedes Mal, wenn die ID verschlüsselt wird, ist es anders, so dass dies funktionieren würde.

War es hilfreich?

Lösung

Sie können auch base64_encode (). Das wird es auch viel länger machen und erscheint „sicherer“. Auch fügt eine Schicht von Verschleierung.

Andere Tipps

vorbei Möglicherweise ist die cryped Daten durch urlencode() würde dies beheben? Nachdem Sie das tun, würden Sie die Daten abfangen, bevor CodeIgniter der Fall ist, und laufen urldecode() auf sie.

Nur eine schnelle Idee, so viel Glück!

Geben Sie für einige Zeichen, dass die Verschlüsselung nicht verwendet und ersetzen Sie sie, wie es passt. Wenn URLs verwenden, rückgängig machen es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top