第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用路由參數(shù)和隱藏輸入值信任用戶

使用路由參數(shù)和隱藏輸入值信任用戶

PHP
慕無(wú)忌1623718 2022-07-02 16:31:34
我正在用 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 是否存在于“用戶”中
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

規(guī)則總是說(shuō)永遠(yuǎn)不要信任用戶,特別是在談到數(shù)據(jù)完整性時(shí)。我建議嘗試 laravel 的驗(yàn)證方法: https ://laravel.com/docs/6.x/validation#rule-exists

但是,如果性能是您首先關(guān)心的問(wèn)題,我會(huì)在首次請(qǐng)求出勤頁(yè)面時(shí)將 userIds 和 sectionIds 緩存在 redis 哈希中,然后檢查例如 student_id 是否在緩存的 user_ids 中如果您想查看 Laravel 的緩存: https ://laravel.com/docs/5.7/cache#retrieving-items-from-the-cache


查看完整回答
反對(duì) 回復(fù) 2022-07-02
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)