我想通过说我知道客户端验证总是必要的前言这个问题,但我想知道这一点。
假设如下:
我有一张表格
<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>
没有涉及ajax。
如果用户禁用了javascript并单击了更新按钮,则不会执行任何操作。 (测试)
如果用户点击输入表单上的任何字段,则表示不提交表单(已测试)
如果用户启用了javascript并点击了更新并且输入字段留空,则他们无法提交表单,并且字段下会显示一条消息,要求您填写(已测试)
在提交表单时,将输入字段中输入的值保存到我的数据库中。
我的问题是:
如何在数据库中为某个字段获取空白值?
P.S。我知道可能有办法,但我想知道它是什么!我不知道该怎么知道如何改进我的代码,或者被告知我应该使用服务器端验证来确保在将记录插入我的数据库之前它不是空白,只是恶意用户会逐字逐句地规避我的代码在这里。
大家都知道,通过朋友,我发现了另一种绕过这种验证的方法。您可以在firebug中自己创建提交元素,并将表单与字段空白一样提交。
答案 0 :(得分:1)
任何人都可以使用无效数据向您的网站发送HTTP POST。他们根本不需要使用您的网页。有成千上万的工具来实现这一目标。例如,使用Web浏览器的JavaScript调试器构建,您可以轻松发送
$("#submit").trigger('click')
没有先通过验证。正如Oswald指出的那样,服务器端验证是最重要的。客户端验证不是为了安全,而是为了用户体验。