我最近一直在寻找一段时间,但不能真正找到一个安全的注册表格。我找到的所有东西都有"open for XSS"
或"Open for SQL injections"
之类的评论。我知道这些攻击意味着什么以及它们是如何完成的(至少主要是如何完成的),但是找到一个安全的向导或已经存在的形式比我想象的要难。我能找到的最好的是一个PDO
,工作得很好,但最后作者写道,它不应该用于更大的项目(找不到链接,抱歉)。
在我昨天开始搜索之前,我用这个表格写了一张我想要的东西的清单。如最小密码长度,确认密码等。我希望我能找到一种容易理解的形式,我可以以此为基础并从中学习。
有人可以张贴一个基本的安全PHP或PDO脚本,易于使用,并给我一些关于我应该或不应该做什么信息?
我建议使用CodeIgniter或Laravel等框架来保护自己免受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();
我建议去看看这些主题,这里有几个网站。
PHP官方文档
W3School on Mysqli
关于filter_var的官方PHP文档
W3School on filter_var
Regex101学习regexp
注:我写的邮件的regexp不是最好的。