Ver Fonte

Check URI validity after QR code upload

Bubka há 5 anos atrás
pai
commit
140cedccf3
2 ficheiros alterados com 18 adições e 4 exclusões
  1. 3 1
      app/Classes/TimedTOTP.php
  2. 15 3
      app/Http/Controllers/QrCodeController.php

+ 3 - 1
app/Classes/TimedTOTP.php

@@ -4,6 +4,7 @@ namespace App\Classes;
 
 use OTPHP\TOTP;
 use OTPHP\Factory;
+use Assert\AssertionFailedException;
 
 class TimedTOTP
 {
@@ -16,10 +17,11 @@ class TimedTOTP
      */
     public static function get($uri)
     {
+        
         try {
             $otp = Factory::loadFromProvisioningUri($uri);
         }
-        catch (InvalidArgumentException $exception) {
+        catch (AssertionFailedException $exception) {
             return false;
         }
 

+ 15 - 3
app/Http/Controllers/QrCodeController.php

@@ -3,11 +3,11 @@
 namespace App\Http\Controllers;
 
 use Validator;
-use Illuminate\Http\Request;
+use Zxing\QrReader;
+use App\Classes\TimedTOTP;
 use Illuminate\Http\File;
+use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Storage;
-use Zxing\QrReader;
-use App\TwoFAccount;
 
 class QrCodecontroller extends Controller
 {
@@ -39,6 +39,7 @@ class QrCodecontroller extends Controller
         $qrcode = new QrReader(storage_path('app/' . $path));
         $uri = urldecode($qrcode->text());
 
+        // delete uploaded file
         Storage::delete($path);
 
         if( empty($uri) ) {
@@ -51,6 +52,17 @@ class QrCodecontroller extends Controller
 
         }
 
+        // Check uri validity
+        if( !TimedTOTP::get($uri) ) {
+
+            return response()->json([
+                'error' => [
+                   'uri' => 'This uri do not return any TOTP code 😕'
+                ]
+            ], 400);
+
+        }
+
         $uriChunks = explode('?', $uri);
 
         foreach(explode('&', $uriChunks[1]) as $option) {