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

时间:2014-01-05 17:38:57

标签: javascript php mysql validation triggers

我知道如何使用客户端(JAVASCRIPT),服务器端(PHP)和数据库(Triggers in mysql)验证数据。我想验证所有这些方法中的数据吗?使用大型申请流程?如果我用这些方法来验证它的速度慢吗?如果是这样做的禁食方式是什么?

JAVASCIPT

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

if(is_nan(data)){

}

PHP

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

}

MYSQL

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;
$$

3 个答案:

答案 0 :(得分:1)

这是我的方法&意见:

始终需要客户端验证有两个原因:

  • 更好的用户体验
  • 避免往返服务器并减少有效负载(这是Netscape首先提出javascript的主要原因)。

始终需要服务器端验证有两个原因:

  • 安全性!,因为有人可以随时发布请求(curl)并绕过客户端验证。
  • 为js禁用的客户端提供回退(现在非常罕见)。

数据库验证:

  • 如果您必须避免写入服务器端代码的团队的错误,请使用这些错误。
  • 如果你的团队很小,编写服务器端代码的人能够实现所有的业务逻辑,而不是在另一个层次上检查它而不是不使用它们。
  • 如果您更喜欢高效率和灵活性而不是数据完整性,请不要使用它们。
  • 如果您的团队中没有人真正知道如何处理sql spaghetti,那就不要使用那些!!
  • 如果您的应用程序太大而性能开始出现问题,那么在进入SQL意大利面条迷宫之前,如果满足您的要求,您必须首先查看NOSQL解决方案。还聘请经验丰富的dba。

随意添加更多理由或纠正错误。

答案 1 :(得分:0)

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

我会亲自使用客户端(在服务器上节省多头)然后在进行准备好的INSERTS,UPDATES或DELETES等之前进行php检查(用于站点安全)。

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

所有人的开销都很小,所以它取决于可接受的脚本时间,用户数量等。

就像我说的那样主观 - 我会去javascript php并确保我的代码是安全的,但那就是我。

从不只是javascript检查 - 方便我开始调用函数并破坏数据库。

答案 2 :(得分:0)

通常在客户端(javascript)和serverside(php)上进行验证就足够了。 因为如果有人禁用js,那么你的js验证将不会发生。因此,您将依赖php进行验证。

相关问题