我正在用 laravel 創建一個學校管理系統軟件,這個項目恰好是我的第一個大項目,用于商業用途。沒有人監督這項工作(所以你看我在這里真的需要建議)。所以我遇到的問題是何時信任用戶輸入以及何時在另一個表中使用模型之前檢查模型是否存在。例如,在將 student_id 插入“attendances”表之前檢查“users”表中是否存在“student_id”。這個問題也適用于我想在其他表中持久化模型的每隔一段時間。作為說明,我拿出了一部分用于讓學生參加的代碼。HTML<form method="POST" action="{{route('daily.attendance')}}"> @csrf <input type="hidden" name="section_id" value="{{$section_id}}"> <input type="hidden" name="semester_id" value="{{$semester_id}}">@foreach ($sections as $section) @foreach ($section->users as $student) <input type="checkbox" name = "present[]" value = "{{$student->id}}" class = "present"> <input type="hidden" name = "students[]" value = "{{$student->id}}"> @endforeach @endforeach<button type="submit" class="btn btn-primary" >{{ __('take attendance') }}</button> </form>因此,即使我為 $section_id 和 $semester_id 使用了隱藏輸入,我知道用戶(管理員)可以通過使用他的瀏覽器控制臺更改這些值,然后發送表單。想象一下管理員有意或無意(顯示for的路由是這樣的"daily/student/section/{section_id}') 將 $section_id 或 $semester_id 更改為與sections 表和Semesters 表中的任何模型都不對應的值。繁榮?。?!他或她(管理員)參加了一個甚至不存在的部分或學期,這并不好,因為它破壞了數據庫的完整性。所以問題是我應該信任管理員還是應該在插入“出席”表之前檢查相應表中是否存在 $section_id 和 $semester_id(這樣做也會增加腳本結束的時間)。還查看 php 代碼,student_id 值也可以從 html 中被篡改,并且您會看到代碼循環通過標記為在場的學生和標記為缺席的學生的數組,我是否還應該檢查 $student_id 是否存在于“用戶”中
使用路由參數和隱藏輸入值信任用戶
慕無忌1623718
2022-07-02 16:31:34