Javascript 在将数据插入数据库之前验证数据

Javascript 在将数据插入数据库之前验证数据,javascript,php,mysql,validation,triggers,Javascript,Php,Mysql,Validation,Triggers,我知道如何使用客户端(JAVASCRIPT)、服务器端(PHP)和数据库(Triggers in mysql)验证数据。在处理大型应用程序进程时,我想用所有这些方法验证数据吗?如果我用这些方法来验证,它会变慢吗?如果是这样的话,最快的方法是什么 JAVASCIPT var data $("#input").val(); if(is_nan(data)){ } DELIMITER $$ CREATE TRIGGER example_before_insert BEFORE INSERT O

我知道如何使用客户端(
JAVASCRIPT
)、服务器端(
PHP
)和数据库(
Triggers in mysql
)验证数据。在处理大型应用程序进程时,我想用所有这些方法验证数据吗?如果我用这些方法来验证,它会变慢吗?如果是这样的话,最快的方法是什么

JAVASCIPT

var data $("#input").val();

if(is_nan(data)){

}
DELIMITER $$

CREATE TRIGGER example_before_insert
BEFORE INSERT ON registrations FOR EACH ROW
BEGIN
IF NEW.RG_Reg_NO NOT REGEXP '^[A-Z]{3}\/[A-Z]-\d{6}$' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'The registration number you have entered is wrong';
END IF;
END;
$$
PHP

if(empty($_POST['input'])){

}
MYSQL

var data $("#input").val();

if(is_nan(data)){

}
DELIMITER $$

CREATE TRIGGER example_before_insert
BEFORE INSERT ON registrations FOR EACH ROW
BEGIN
IF NEW.RG_Reg_NO NOT REGEXP '^[A-Z]{3}\/[A-Z]-\d{6}$' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'The registration number you have entered is wrong';
END IF;
END;
$$

这是主观的-您需要多安全,以及您对编写安全代码有多自信

我个人会先使用客户端(最重要的是在服务器上保存),然后进行php检查(为了站点安全),然后再进行准备好的插入、更新或删除等操作

但是,如果您认为有人可以在您的数据库上运行查询,那么可以使用MySQL检查

对于所有人来说,开销都非常小,因此它取决于可接受的脚本时间、用户数量等

正如我所说的主观-我会使用javascript php并确保我的代码是安全的,但那只是我自己


永远不要只进行javascript检查-这对我来说很容易开始调用函数并破坏数据库。

通常在客户端(javascript)和服务器端(php)进行验证就足够了。 因为如果有人禁用了js,则不会进行js验证。因此,您将依赖php进行验证。

这是我的方法和观点: 出于两个原因,始终需要客户端验证:
  • 更好的用户体验
  • 避免往返服务器并减少有效负载(这是Netscape首先提出javascript的主要原因)
出于两个原因,始终需要服务器端验证:
  • 安全因为有人总是可以发布请求(curl)并绕过客户端验证
  • 为禁用js的客户端提供回退(现在非常罕见)
数据库验证:
  • 如果必须避免编写服务器端代码的团队出错,请使用这些代码
  • 如果您的团队很小,并且编写服务器端代码的团队能够实现所有业务逻辑,而无需在另一个级别对其进行双重检查,就可以不使用这些逻辑
  • 如果您更喜欢生产力和灵活性而不是数据完整性,请不要使用这些
  • 如果您的团队中没有真正知道如何处理sql意大利面的人,那么不要使用这些
  • 如果您的应用程序太大,以至于性能开始成为一个问题,那么您必须首先检查NOSQL解决方案,如果它们满足您的需求,然后才能进入SQL意大利面迷宫。还应雇佣有经验的dba

请随意添加更多理由或更正我的错误。

Javascript。为什么要第二次调用服务器脚本,最终调用数据库?更好的办法是赶上客户。