【发布时间】:2018-06-07 01:25:10
【问题描述】:
我知道 js 验证是针对客户端的,而 php 验证是针对服务器端的。 用户可以跳过 js 验证并提交,但是当我在 ajax 中获取操作 php 文件时可以吗?
我的意思是我正在使用以下代码来验证表单。如您所见,我在 ajax 中调用 postProjectAction.php .. 如果用户跳过js/禁用js并提交表单,表单将不会被提交,因为,
- 我的表单没有动作
- 如果不调用postProjectAction.php,表单数据将不会被插入或提交到数据库。当用户禁用 js 代码不会调用 postProjectAction.php
所以没有机会提交表单。 这仍然不安全吗?
html:
<form id="form_validation" method="POST">
</form>
js 验证:
$(document).ready(function() {
$("#form_validation").submit(function() {
if ($("#form_validation").valid()) {
var data1 = $('#form_validation').serialize();
$.ajax({
type: "POST",
url: "postProjectAction.php",
data: data1,
success: function(msg) {
console.log(msg);
$('.messagebox').hide();
$('#alert-message').html(msg);
$('.messagebox').slideDown('slow');
}
});
}
return false;
});
});
【问题讨论】:
-
是的,考虑一下其他人使用此 url 发送垃圾邮件的场景
-
有时由于网络连接不畅导致某些js文件无法正确加载,因此在这种情况下用户无法提交表单。因此最好同时使用客户端和服务器验证
-
我的经验法则是,前端所做的几乎所有事情都不会涉及安全性,因为它都可以由最终用户修改。如果在任何时候你需要一些东西来保证安全,那就是我开始关注服务器端的时候。
-
简单规则:不要相信客户!
标签: php jquery ajax validation