Sans commentaire

Google apporte son point de vue sur l’usage des fois trop exagéré des commentaires.

J’ai eu un stagiaire une fois qui était surpris du peu de commentaire dans un de mes codes. Je lui ai demandé en regardant plus en détail ce que je pouvais commenter car mes noms de fonctions, de variables étaient suffisants.

J’ai un collègue qui use et abuse des commentaires. Quel intérêt de ce type par exemple ?

// Get all users.
userService.getAllUsers();

A utiliser avec précaution.

Source

Optimiser la vitesse de chargement d’une page

Korben nous met à disposition une page qui permet de faire un rappel sur les bonnes pratiques pour améliorer la vitesse de chargement d’une page web.

Toujours aussi énervant quand on voit qu’une page met une éternité à s’afficher, sous prétexte que nos ordinateurs sont de plus en plus rapides. Or il peut arriver qu’on ait besoin d’accéder à cette page depuis un mobile avec un réseau pas au top de sa forme, ou chez quelqu’un qui a une connexion moyenne (eh oui tout le monde n’a pas la fibre ou un ADSL en débit max).

Bref on y retrouve quelques mots-clés, et des solutions qui passent d’abord par l’audit du site, par le cache du serveur, ou diverses balises à ajouter.

A appliquer !

 

Zip Bomb

Pif paf pouf, et… zip !

Hop, petit code pour créer une zip bomb du blog de Haschek :

dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip

Avec ça vous créez un fichier zippé qui fera 10 Go une fois décompressé.

L’intérêt est de le transmettre via votre serveur web par ce code PHP par exemple :

<?php
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip');

Puis d’insérer le script suivant sur une de vos pages pour transmettre ce fichier :

<?php
$agent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT');

//check for nikto, sql map or "bad" subfolders which only exist on wordpress
if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))
{
sendBomb();
exit();
}

function sendBomb(){
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip');
}

function startsWith($a, $b) {
return strpos($a, $b) === 0;
}

Et avec ceci les scanners de vulnérabilités chercheront à ouvrir le fichier et planteront.

Source

Nextcloud et Object Storage d’OVH

Retour d’expérience intéressant pour ceux qui ont une instance Nextcloud (ou ownCloud) et veulent le combiner à la plateforme Public Cloud Storage d’OVH.

L’avantage de cette solution d’OVH est d’avoir un tarif très intéressant avec la sécurité qui va avec en fonction de la taille de vos données (il faudrait héberger 100 Go pour ne payer que 1 € par mois). Alors si on peut en plus le combiner avec sa propre instance Nextcloud, c’est super.

Voici donc un exemple type pour configurer le serveur de la sorte :

'objectstore' => array(
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => array(
'username' => 'OS_USERNAME',
'password' => 'OS_PASSWORD', // mot de passe généré dans l'interface OVH
'bucket' => 'CONTAINER_NAME',
'autocreate' => false,
'region' => 'GRA3',
'url' => 'https://auth.cloud.ovh.net/v2.0',
'tenantName' => 'OS_TENANT_NAME',
'serviceName' => 'swift',
),
),