2012-04-17 65 views
0

我想验证用户在表单中输入的数据。我只有一个用户名和两个密码字段。我的第一个问题是,我用JavaScript检查数据,它工作正常,但我想检查数据与PHP太incase JavaScript无法正常工作。如果JavaScript不工作,将从php代码检查数据,但我的问题是,如果JavaScript正在工作,那么数据将被检查从JavaScript和PHP了。这很好吗?有没有什么办法可以避免使用php检查输入数据是通过javascript检查?此外,我正在检查输入(用户名和密码)的字符数,为字符(我不允许特殊字符,只有“_”,“。”数字和字母,以避免SQL注入) - 它是如何声音给你?你有任何其他建议更好的验证?在php中验证输入数据 - javascript

预先感谢您。

+2

你应该经常检查在PHP端,因为JavaScript是不安全的。 – 2012-04-17 21:36:03

回答

2

您应该总是做userinput的服务器端(php)验证。客户端(javascript)验证仅对更好的用户体验有好处。此外,你不应该限制输入到一些字符为防止mysql注入,还有其他可靠的方法。

+0

谢谢你的回答! :)我正在使用这个函数mysql_real_escape_string()进行sql注入。但是限制输入中的一些字符不会更好吗?我认为有数字,字母和“_”,“”的密码。也许一些更特殊的角色可能足够安全。 – anna 2012-04-17 21:46:54

+0

mysql_real_escape_string()是防止mysql注入的好开始,不需要限制用户输入。但总有人可以绕过这一点,但一开始它应该持续下去。 – 2012-04-17 21:52:52

+0

我想限制用户的输入,因为你说了什么。如果我只使用mysql_real_escape_string()函数,这可能还不够。如果我有一个防止sql注入的解决方案,这将是一件好事,这就是为什么我决定限制输入。 – anna 2012-04-17 22:04:21

1

检查双方是好的,绝对推荐。如果您希望避免使用PHP进行检查(如果启用了Javascript),则可以在表单中追加隐藏字段并使用PHP检查此内容。

E.G.

if(!isset($_POST['js_hidden_field'])) { 

    // Run Validation 

} 

所以,你检查的隐藏字段,如果它没有设置,运行PHP验证

+0

由于建议我会在两者中进行检查(正如你所有的建议),但感谢你的解决方案。 :) – anna 2012-04-17 21:43:47

+0

我的荣幸! :) – 2012-04-17 21:45:03

2

是的,你应该同时验证客户端(JS)和服务器端(PHP)。

为了方便用户和改善用户体验,在客户端上这样做。

在服务器上这样做以防止恶意攻击,或者如您所述,在您的用户禁用JS的情况下。

2

您应该始终执行服务器端验证。不能保证客户端验证(如JavaScript验证)不能被破坏。这是一个简单的练习来抓住一个调试工具(现在有许多内置在浏览器中)并绕过javascript验证。

通常没有什么不对,甚至建议在Javascript和PHP这两个地方进行验证。

1

这实际上是好的,我认为你永远不会做太多的验证。任何具有Web开发经验的人都可以操纵客户端脚本,但服务器端脚本不能。

客户端脚本验证优点:

  • 通知提交数据,允许他们改正自己
  • 使您的网站看起来更加复杂

服务器端验证利弊之前用户:

  • 没有人可以更改您的任何验证规则
  • 他们无法关闭服务器端验证。

简而言之,两者都很好,它实际上比只做一个或另一个好。