Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我学习如何制作一个安全但易于维护的PHP注册表单时,从哪里开始?_Php_Pdo - Fatal编程技术网

当我学习如何制作一个安全但易于维护的PHP注册表单时,从哪里开始?

当我学习如何制作一个安全但易于维护的PHP注册表单时,从哪里开始?,php,pdo,Php,Pdo,我最近一直在找,但找不到一份安全的登记表。我找到的所有东西都有类似于“为XSS打开”,或“为SQL注入打开”的注释。我知道这两种攻击意味着什么以及它们是如何进行的(至少主要是如何进行的),但是找到一个安全的guid或已经存在的表单比我想象的要困难。我能找到的最好的是一个PDO一个,效果很好,但最后作者写道,它不应该用于更大的项目(找不到链接,抱歉) 在我昨天开始搜索之前,我用这个表单写了一个我想要的东西的列表。如最小密码长度、确认密码等,希望我能找到一个易于理解的表单,可以在此基础上构建和学习

我最近一直在找,但找不到一份安全的登记表。我找到的所有东西都有类似于
“为XSS打开”
,或
“为SQL注入打开”
的注释。我知道这两种攻击意味着什么以及它们是如何进行的(至少主要是如何进行的),但是找到一个安全的guid或已经存在的表单比我想象的要困难。我能找到的最好的是一个
PDO
一个,效果很好,但最后作者写道,它不应该用于更大的项目(找不到链接,抱歉)

在我昨天开始搜索之前,我用这个表单写了一个我想要的东西的列表。如最小密码长度、确认密码等,希望我能找到一个易于理解的表单,可以在此基础上构建和学习


有人能发布一个简单易用的基本安全PHP或PDO脚本,并告诉我应该做什么或不应该做什么吗?

我建议使用一个框架,例如或来保护自己免受XSS和SQL注入的影响。 框架帮助您使用有用的库、助手和数据库连接器
但最终,您所要做的就是验证站点的每个条目,并在创建SQL查询时绑定参数。
要验证电子邮件,您可以使用filter_var中的电子邮件筛选器:

if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  echo("$email is a valid email address");
} else {
  echo("$email is not a valid email address");
}
或者简单地使用正则表达式:

if(filter_var($string,FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/((\w)@(\w)\.(\[a-z]{2-4}/")))){
    echo 'Valid Email';
} else {
    echo 'invalid email';
}
对于数据库,只需准备语句并绑定参数即可

$stm = mysqli_prepare('SELECT password FROM user WHERE email = ?')
$stm->bind_param('s', $email); // s for String
$stm->execute();
我建议你去看看这些主题,这里有几个网站。







另外,我写的电子邮件的regexp不是最好的。

根据“在这里问什么”的定义,这个问题显然是离题的。它需要一个推荐。我有一个教程。它不涉及创建注册表单,但展示了如何在PHP/PDO应用程序的上下文中对抗XSS和SQL注入。在此基础上创建一个注册表单非常简单。如果遵循此操作,将提供一种非常有问题的安全感。关于“使用框架”来对抗SQL注入和XSS的建议需要注意:它们可以提供帮助,但不知情的用户仍然可以添加这些安全问题。更好的做法是理解如何删除它们,而不是依赖框架魔法。我知道框架并不神奇,但它们至少对易于使用的库有一点帮助。但是我同意它不适合你。我会调查一下,顺便说一句,我找到了我所说的PDO表单,()在最后一页,作者说“这段代码还没有准备好生产”。是的,很难从互联网上删除代码并使其完美地工作,你通常必须理解它,然后根据自己的需要制作自己的代码。