Einfache Absicherung von Parametern

| Keine Kommentare

Für verschiedene Zwecke ist es sinnvoll, eine Liste mit Werten bei der Übertragung mit einem Hashwert abzusichern. Dieser Wert ist eine Prüfsumme, die aus den einzelnen Werten und einer geheimen Zeichenkette (salt) gebildet wird.

Beide Seiten, also sowohl der Sender als auch der Empfänger, kennen diese Zeichenkette und erzeugen auf die selbe Art die Prüfsumme.

Durch die Prüfsumme soll verhindert werden, dass die Daten bei der Übertragung durch Fremde manipuliert werden können. In dem Fall würde der Hashwert nicht mehr stimmen.

Eine sehr einfache Funktion normalisiert das Array durch Sortierung und bildet dann daraus den Hashwert mit einer Rückruffunktion (callback).

<?php
/**
 * Calculate hashvalue for params
 *
 * @param    array $params
 * @param    string $salt
 * @param    string $callback OPTIONAL (default='sha1')
 * @return   string
 */
function getParamsHash(array $params, $salt, $callback = 'sha1') {
    $params['__SALT__'] = $salt;
    ksort($params);
    return call_user_func($callback, implode(',', $params));
}

$params1 = array(
    'key1' => 'value1',
    'key2' => 'value2'
);

$params2 = array(
    'key2' => 'value2',
    'key1' => 'value1'
);

$salt = 'blablubb';

echo 'p1-hash: ' . getParamsHash($params1, $salt, 'md5') . '<br/>';
echo 'p2-hash: ' . getParamsHash($params2, $salt, 'md5') . '<br/>';

Die Ausgabe ist unabhängig von der Reihenfolge der Werte im Array identisch.

p1-hash: 3e71eda7b8539791ea2fd8f159b5e57b
p2-hash: 3e71eda7b8539791ea2fd8f159b5e57b

Natürlich kann die Funktion auch auf andere Art den Wert berechnen, nun muss das dann wieder auf beiden Seiten gleich sein.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.


Schlagwörter: A/B-Test, AbstractType, Adapter, AddOn, Administration, Ajax, Amazon, Animation, Annotations, Anonyme Klasse, Ant, Apache, API, Array, ArrayAccess, Attachment, Auftrag, Ausbildung, Auswertung, Authentifizierung, AutoLoader, AWS, Bedienung, Bedingung, Benchmark, Berechtigung, Berlin, Bildbearbeitung, Bildschirmfoto, Blog, Blogroll, BOM, Bootstrap, Bot, Browser, Bugtracker, Byte Order Mark, Bücher, Cache, CakePHP, Call-Center, Callback, CamelCase, Canvas, Captcha, CDN, Cheatsheet, CLI, Clickout, Closure, Cloud, CodeSniffer, Collection, Community, Comparator, Config, Contest, Controller, Converter, CouchDB, Countable, Cronjob, CRUD, CSS, CSV, CustomLibrary, Custom_Model, Daemon, Data Mapper, Datei, Datenbank, Datenstruktur, Datentypen, Dating, Datum, Debug, Decorator, Dekorierer, Design, Design Patterns, Doctrine, Dokumentation, Dump, Duplikat, each, EC2, Eclipse, Email, Entwicklung, Entwurfsmuster, Enum, Erweiterung, Event, Eventhandling, Exception-Handling, Extension, Facebook, Factory, Fallback, Fehler, Fehlermeldung, Filter, Firefox, Flash, flexigrid, Foreach, Formatierung, Formular, Framework, FTP, Funktion, Futon, ga:pi(), Getter, Google Analytics, Hash, Hash-Bang, Header, htaccess, HTML5, htpasswd, HTTP, HTTPS, IDE, If, Implementierung, InnoDB, Interceptor, Interface, Internet Explorer, isset, Iterator, Java, JavaScript, Job, jQuery, Kommentar, Konfiguration, Konsole, Kontrollstruktur, kopieren, kostenlos, Kundenbetreuung, Late Static Binding, Layout, Links, Linux, Listeners, Lizenz, Logging, Löschen, Magento, Magic Methods, Manual, ManyToMany, Marketing, Methode, Model, Monolog, MVC, MySQL, NetBeans, Network, Nirvanix, Objekt, Observable, Observer, OneToMany, Online Tool, OOP, Open Source, Operator, OR-Mapper, Order, ORM, O’Reilly, Parameter, Partnersuche, Passwort, Performance, PHP, php.ini, PHP hates me, phpMyAdmin, PHPUnit, Plugin, Popup, Proxy, Prüfsumme, Prüfung, QR-Code, Qualitätssicherung, Query, Queue, Redesign, Refactoring, Reflection, Request, Response, Responsive Design, Rest-API, Rockstar, Rollback, Routing, S3, Samba, Scheifen, Schleife, Schutz, Screenshot, Secure Shell, Selbstreferenz, Server, Setter, setTimeout, Shop, Sicherheit, Sicherung, Sichtbarkeit, Singleton Pattern, Skin, SOAP, Social Network, Software, Sortierung, Sourcecode, Spam, Speicherproblem, Spickzettel, SPL, Splittest, SSH, SSL, Stammtisch, Statement, static, Statistik, Status, Stellvertreter, Strategy Pattern, Stream, String, Stuttgart, Stylesheet, Subversion, Sun VirtualBox, Support, SVN, Switch, Symfony, Symfony2, Symfony Live, Tag, Template, Template Method, Ternär Operator, Testing, Theme, Thumbnail, Tool, Tour, Tracking, Twig, Twitter, Type-Cast, Ubuntu, Umwandlung, Underscore, unset, Update, Upload, Url, User Story, Validierung, Vererbung, Versionskontrolle, Versionsnummer, Verzweigung, Video, Videospiel, Virtualisierung, Visitor Pattern, Vorschaubild, walk, Warteschlange, Webserver, Webservice, Weiterleitung, Werkzeug, Windows, WindowsAzure, WordPress, Wrapper, Writer, XML, Youtube, Zeitschleife, Zeitsteuerung, Zend Framework, Zend_Application, Zend_Cloud, Zend_CodeGenerator, Zend_Http_Client, Zend_Reflection, Zend_Service, ZPress, Zugangskontrolle, Zugriffsmethode