瀏覽代碼

Update webfinger util, fail on invalid webfinger url

Daniel Supernault 4 年之前
父節點
當前提交
2d11317ceb
共有 2 個文件被更改,包括 17 次插入4 次删除
  1. 1 1
      app/Http/Controllers/FederationController.php
  2. 16 3
      app/Util/Lexer/Nickname.php

+ 1 - 1
app/Http/Controllers/FederationController.php

@@ -63,7 +63,7 @@ class FederationController extends Controller
         }
         $webfinger = (new Webfinger($profile))->generate();
 
-        return response()->json($webfinger, 200, [], JSON_PRETTY_PRINT)
+        return response()->json($webfinger, 200, [], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)
             ->header('Access-Control-Allow-Origin','*');
     }
 

+ 16 - 3
app/Util/Lexer/Nickname.php

@@ -2,22 +2,35 @@
 
 namespace App\Util\Lexer;
 
+use Illuminate\Support\Str;
+
 class Nickname
 {
     public static function normalizeProfileUrl($url)
     {
-        if (starts_with($url, 'acct:')) {
+        if(!Str::of($url)->contains('@')) {
+            return;
+        }
+
+        if(Str::startsWith($url, 'acct:')) {
             $url = str_replace('acct:', '', $url);
         }
 
-        if(starts_with($url, '@')) {
+        if(Str::startsWith($url, '@')) {
             $url = substr($url, 1);
+
+            if(!Str::of($url)->contains('@')) {
+                return;
+            }
         }
 
         $parts = explode('@', $url);
         $username = $parts[0];
         $domain = $parts[1];
 
-        return ['domain' => $domain, 'username' => $username];
+        return [
+            'domain' => $domain, 
+            'username' => $username
+        ];
     }
 }