J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5163 links
Single file PHP script that adds a REST API to a MySQL InnoDB database. Alternatively SQLite 3, PostgreSQL 9 and MS SQL Server 2012 are fully supported.
Limitations
Authentication is not included
Composite primary or foreign keys are not supported
Complex filters (with both "and" & "or") are not supported
Complex writes (transactions) are not supported
Complex queries calling functions (like "concat" or "sum") are not supported
Batch operations for insert, update and delete are not supported
"MyCryptoChat est une petite application de chat très simple, sécurisée à la ZeroBin. C’est-à-dire que les conversations sont intégralement chiffrées côté client."
Je mets ça là pour me souvenir de cette application...
Un site qui vaut le détour
{code
function _encodeToUtf8($string) {
$string = str_replace(array('ä','ë','ï','ö','ü','â','ê','î','ô','û','è','ì','ò','ù','é','ç','µ','É','Ç','À','È','ÃŒ','Ã’','Ù','Â','Ê','ÃŽ','Ô','Û','Å’','Å“','–'),array('ä','ë','ï','ö','ü','â','ê','î','ô','û','è','ì','ò','ù','é','ç','µ','É','Ç','À','È','Ì','Ò','Ù','Â','Ê','Î','Ô','Û','Œ','œ','-'),$string)
//"à" volontairement mis à part pour éviter les conflits
return str_replace('Ã','à',$string);
}
code}
Comme je me suis pas mal pris la tête avec une fonction qui utilise mb_substr(), je vous mets ici une astuce qui pourra vous tirer d'un mauvais pas.
Voici la classe que j'utilise (la clé key est une constante définie ailleurs dans mon code) :
{code
/**
This library is unsafe because it does not MAC after encrypting
*/
class Mask {
const METHOD = 'AES-256-CBC';
public static function encrypt($message)
{
if (mb_strlen(key, '8bit') !== 32) {
throw new \Exception("Needs a 256-bit key!");
}
$ivsize = openssl_cipher_iv_length(self::METHOD);
$iv = openssl_random_pseudo_bytes($ivsize);
$ciphertext = openssl_encrypt(
$message,
self::METHOD,
key,
OPENSSL_RAW_DATA,
$iv
);
return bin2hex($iv.$ciphertext);
}
public static function decrypt($message)
{
if (mb_strlen(key, '8bit') !== 32) {
throw new \Exception("Needs a 256-bit key!");
}
$message = hex2bin($message);
$ivsize = openssl_cipher_iv_length(self::METHOD);
$iv = mb_substr($message, 0, $ivsize, '8bit');
$ciphertext = mb_substr($message, $ivsize, mb_strlen($message), '8bit');
return openssl_decrypt(
$ciphertext,
self::METHOD,
key,
OPENSSL_RAW_DATA,
$iv
);
}
}
code}
L'erreur venait de mb_substr() qui me retournait false systématiquement (ce qui fait que la fonction decrypt ne fonctionnait pas).
Passing null as length will not make mb_substr use it's default, instead it will interpret it as 0.
{code
<?php
mb_substr($str,$start,null,$encoding); //Returns '' (empty string) just like substr()
?>
code}
Instead use:
{code
<?php
mb_substr($str,$start,mb_strlen($str),$encoding);
?>
code}
Je précise que cette classe est utilisée pour encrypter des données qui n'ont pas besoin d'une protection de folie. C'est juste pour empêcher que l'on puisse les lire directement en ouvrant la base de données (via un phpMyAdmin par exemple).
Un site sur les bonnes manières (^_^) Encore un !
Toujours bon de l'avoir sous le coude.
Un serveur en pur php...
Pour activer l'extension sur un serveur WAMP (windows donc), il faut :
éditer le php.ini (ou activer l'extension via le module du systray) et copier tous les fichiers icu***.dll du dossier wamp/bin/php/phpX.Y.Z/ vers le dossier wamp/bin/apache/apacheA.B.C/bin/.
Redémarrer ensuite le serveur et l'extension sera activée.
Vous pouvez tester son activation en faisant :
{code if (extension_loaded('intl')) {
echo "OK";
} else {
echo "Please install the php5-intl extension and make sure it's enabled";
} code}
Ça m'a l'air pas mal comme appli. C'est par le créateur de Adminer qui est un MySQL simplifié qui tient dans un fichier.
Récupérer des pages gzippées.
Une barre de debug pour php.
À tester.
Bof bof. C'est vraiment le principe de base mais surtout pas à appliquer en prod. J'ai lu en diagonale et j'ai au moins vu deux problèmes : l'utilisation des fonctions mysql_* qui sont obsolètes depuis longtemps; l'utilisation de md5 pour "crypter" le mot de passe. Il existe des fonctions natives en php autrement plus sécurisées pour ça...
Bon, j'avoue. J'ai pas tout compris...
Mais j'ai retenu d'utiliser des UUID à la place des ID autoincrement dans la base !
Je ne sais pas vous, mais je ne vois pas ça d'un très bon oeil...
Intéressant, merci
Realistic PHP password strength estimate library based on Zxcvbn JS
via le Colibri