Il y a t-il un moyen de détecté si tel ou tel site à été réaliser avec le Framework Laravel ?
🙂 Laravel, par défaut, utilise bien une signature particulière dans … le nom de cookie de la session. Il suffit donc d’aller sur le site web et de lire les noms des cookies générées; Si l’on trouve « laravel_session » alors c’est gagné.
Le faire avec un navigateur est quelque peu fastidieux, pas grave, nous avons la bibliothèque curl fournie avec php.
Il nous faut au départ un formulaire :
<input name="dns" placeholder="nom de domaine">
Dans mon contrôleur, j’ai une méthode générale de vérification :
private function isSiteLaravel($url,$cookies_file) { file_put_contents($cookies_file,''); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies_file); try { curl_exec($ch); curl_close($ch); } catch (Exception $e) { return false; } $cookies=file_get_contents($cookies_file); unlink($cookies_file); return strpos($cookies,'laravel_session'); }
A la réception du formulaire, je traite,vérifie l’url du site web puis utilise ma méthode isSiteLaravel :
public function postIslaravel() { $url='http://'.trim(Input::get('dns')); //Validator::make( array('site'=>$url), array('site' => 'url') ); //if ($validator->fails()) { throw new Exception('url invalide'); } $cookies_file = storage_path().'/cookies.txt'; $laravel=$this->isSiteLaravel($url,$cookies_file); $msg= ($laravel) ? array('error', 'site non laravel') : array('success', 'site web Laravel'); return Redirect::route('formulaire')->with($msg[0],$msg[1]); }