我正在用 laravel 創(chuàng)建一個(gè)學(xué)校管理系統(tǒng)軟件,這個(gè)項(xiàng)目恰好是我的第一個(gè)大項(xiàng)目,用于商業(yè)用途。沒(méi)有人監(jiān)督這項(xiàng)工作(所以你看我在這里真的需要建議)。所以我遇到的問(wèn)題是何時(shí)信任用戶輸入以及何時(shí)在另一個(gè)表中使用模型之前檢查模型是否存在。例如,在將 student_id 插入“attendances”表之前檢查“users”表中是否存在“student_id”。這個(gè)問(wèn)題也適用于我想在其他表中持久化模型的每隔一段時(shí)間。作為說(shuō)明,我拿出了一部分用于讓學(xué)生參加的代碼。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 使用了隱藏輸入,我知道用戶(管理員)可以通過(guò)使用他的瀏覽器控制臺(tái)更改這些值,然后發(fā)送表單。想象一下管理員有意或無(wú)意(顯示for的路由是這樣的"daily/student/section/{section_id}') 將 $section_id 或 $semester_id 更改為與sections 表和Semesters 表中的任何模型都不對(duì)應(yīng)的值。繁榮!??!他或她(管理員)參加了一個(gè)甚至不存在的部分或?qū)W期,這并不好,因?yàn)樗茐牧藬?shù)據(jù)庫(kù)的完整性。所以問(wèn)題是我應(yīng)該信任管理員還是應(yīng)該在插入“出席”表之前檢查相應(yīng)表中是否存在 $section_id 和 $semester_id(這樣做也會(huì)增加腳本結(jié)束的時(shí)間)。還查看 php 代碼,student_id 值也可以從 html 中被篡改,并且您會(huì)看到代碼循環(huán)通過(guò)標(biāo)記為在場(chǎng)的學(xué)生和標(biāo)記為缺席的學(xué)生的數(shù)組,我是否還應(yīng)該檢查 $student_id 是否存在于“用戶”中
使用路由參數(shù)和隱藏輸入值信任用戶
慕無(wú)忌1623718
2022-07-02 16:31:34