我想說這個問題的前提是我知道客戶端驗證總是必要的,但我仍然想知道這一點。如何在這種特殊情況下規避客戶端驗證
假設如下:
我有一個表格
<form id="update_form" action="/App/appManage/" method="post">
<input name="data[test]" value="1" type="text" id="AppModified"/>
</form>
和表單的提交按鈕之外。
<a id="update_button" class="btn btn-primary btn-medium">Update</a>
此按鈕通過以下的Jquery提交:
<script>
$(document).ready(function() {
$("#update_button").click(function() {
$("#update_form").submit();
});
});
//Form Validation
$("#update_form").validate({
rules: {
"data[test]": "required"
},
messages: {
"data[test]": "Please enter a value for this field"
}
});
</script>
沒有參與阿賈克斯。
如果用戶禁用javascript並單擊更新按鈕,則不執行任何操作。 (測試)
如果用戶點擊任何窗體上的字段中輸入,它不會提交表單(測試)
如果用戶已經啓動Javascript並點擊更新和輸入字段爲空他們無法提交表格並且在該字段下閃爍,請求您填寫(已測試)
提交表單時會將輸入字段中輸入的值保存到我的數據庫中。
我的問題是:
一個人怎麼能得到我的數據庫字段爲空值?
P.S.我知道可能有一種方法,但我想知道它是什麼!我不知道該怎麼知道如何改進我的代碼,或者被告知我應該使用服務器端驗證來確保在將記錄插入到我的數據庫之前它不是空白的,只是惡意用戶會逐字地繞過我的數據庫代碼在這裏。
大家都知道,通過一位朋友,我發現了另一種方法來規避這種類型的驗證。你可以自己在螢火蟲中創建提交元素,並提交與該領域空白的表單。
使用AJAX?首先驗證JS中的表單,以及何時發送完AJAX請求並檢查服務器上的信息。 – elclanrs
客戶端驗證從不*必須。它始終是可選的,除了增強可用性(用戶不需要提交表單並等待服務器的響應)之外,其他任何用途都不起作用。確定用戶數據是否被允許訪問數據庫的真實驗證必須在服務器上完成。 – Oswald
這裏沒有涉及ajax。表單提交併將輸入保存在數據庫中。我不理解這些關於用戶如何提交沒有輸入值的表單的評論。 – user2278120