尊敬的StackOverflow社區!Laravel資源更新和操作與檢查元素
我剛剛遇到了從檢查元素控制檯操縱ID。
例如,如果我的表格有行動:/tickets/update/2
然後,如果我改變它檢查元素,以/tickets/update/3
例如,然後更新您在/update/2
不得不/update/3
所有的數據都沒有什麼辦法來防止這種?
最好的問候。 :)
尊敬的StackOverflow社區!Laravel資源更新和操作與檢查元素
我剛剛遇到了從檢查元素控制檯操縱ID。
例如,如果我的表格有行動:/tickets/update/2
然後,如果我改變它檢查元素,以/tickets/update/3
例如,然後更新您在/update/2
不得不/update/3
所有的數據都沒有什麼辦法來防止這種?
最好的問候。 :)
你不能阻止事物的瀏覽器端的變量操作。你必須確保你的路線。 Laravel手冊在how to get started with authentication上的寫法相當不錯。
您可以使用hashids來混淆您的標識符變量,但這是不是安全措施。
您要做的是驗證發出請求的最終用戶實際上是否有權訪問該資源。
基本例如:
function show(int $id): JsonResponse
{
$user = Auth::user();
$result = Resource::where('user_id', $user->id)
->where('id', $id)
->firstOrFail();
return Response::json($result);
}
當然,這都是可以更優雅的做用中間件,但原理基本相同。
是。我使用權限和身份驗證中間件來保護路線。 我想到的一個想法是使用哈希,而不是整數ID,但它的代和重複檢查是痛苦的屁股... – user2132802
我根據您的評論更新了我的答案。 –
您需要對輸入執行驗證。
FormRequest
驗證使得這非常容易,特別是專門爲此設計的authorize
方法。您只需從路由中獲取id並確保登錄的用戶有權修改該id。
https://laravel.com/docs/5.2/validation#form-request-validation
改進格式 – Dmitry