验证技术 - 开放讨论

时间:2014-02-19 23:08:06

标签: php validation xss csrf

所以搜索了互联网和stackoverflow以找到之前可能已讨论的任何相关内容或任何文章,我无法找到任何内容,所以我发现自己创建了这个主题。

我正在开发一个项目,我在POST上发出了很多ajax请求。 Therfor验证起着重要的作用。

所以我创建了一些验证函数,如下所示

   //only numeric (integer) regexp [1-9]
   Validation::isInteger($a);
   //numeric and alphabetic (integer&string) regexp [a-z1-9]
   Validation::isAlphaNum($c);
   //(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday) Regexp
   Validation::isDay($d);
   //Array numeric (integer) Regexp
   Validation::isArrayNum($sortTo);

我在我的代码中使用它,但这看起来很难看! 在模型中:

 if(Validation::isInteger($a))
 {
   if(Validation::isAlphaNum($c))
   {
     if(Validation::isDay($d))
     {
       if(Validation::isArrayNum($sortTo))
       {
          //do process here!
 }}}}

然后我考虑做这样的验证;不确定它是否安全! 在模型中:

   if(!Validation::isInteger($a) &&
      !Validation::isAlphaNum($c) &&            
      !Validation::isDay($d) && 
      !Validation::isArrayNum($sortTo)) exit;

      //do process here anyway without "if" closure if you dont pass validation above you won't see me!

我的问题是:

  1. 我应该在Controller或模型中验证数据吗?这有关系吗?
  2. 我的第二种方法是否安全?
  3. 您如何验证数据? (你的代码设计是什么)
  4. 我可以使用哪些其他方法/技巧来美化这种丑恶。
  5. 注意:由于验证失败,我不太担心丢失错误。

    编辑:(2014年2月23日)但是如果你在验证方面遇到同样的问题,或者想要有一个想法我真的建议你观看它,我在youtube.com上发现了一个关于验证的视频。 http://www.youtube.com/watch?v=rWon2iC-cQ0&index=13&list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc

1 个答案:

答案 0 :(得分:1)

许多框架将模型验证的概念引入其自己的类或模块。例如,您有一个模型,并且您具有针对该模型的验证规则。基于规则验证模型的任务可以存在于高级验证类中。规则本身也可以存在于自己的类中。 Symfony2等框架允许通过配置或注释对模型进行验证。值得花时间研究Symfony2 uses validation