- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只想对网站的一些 php 代码提供一些反馈,因为这是我第一次编写可以在公共(public)网站上正确使用的代码,而且我有点偏执。
此代码位于注册页面的顶部,其中包含一个发送回自身的 post 表单,因此我通过检查 POST 是否为“isset”来检查表单是否已完成。
这是一个注册页面:
<?php
if (isset($_POST['email'])) {
$thanks = '';
$name = $_POST['name'];
$email = $_POST['email'];
$postcode = $_POST['postcode']; //not used
$password = $_POST['password'];
//connects to database, DB variable is dbConnection
require_once("include/database_connect_test.php");
//First check email isn't already on DB
$sql = 'SELECT * FROM `user_profile` WHERE email=?';
$stmt = $dbConnection->prepare($sql);
$stmt->bind_param('s', $email);
$stmt->execute();
$stmt->store_result();
$num_of_rows = $stmt->num_rows;
$stmt->close();
if($num_of_rows>0)
$thanks = 'This email has already been registered';
//If not, create profile
else{
require_once('generate_uuid.php');
$hash = password_hash($password, PASSWORD_BCRYPT); //password_verify(pass, hash) to verify
$sql = 'INSERT INTO `user_profile`(`name`, `email`, `hash`, `uuid`) VALUES (?,?,?,?)';
$stmt = $dbConnection->prepare($sql);
$stmt->bind_param('ssss', $name, $email, $hash, $uuid);
$stmt->execute();
$stmt->close();
$thanks = 'Thank you for signing up!'; //used in the html
}
}?>
提前感谢您的任何输入:)
最佳答案
从安全的角度来看,我没有发现任何特别的错误。您正在正确地做最重要的事情:
password_hash()
散列密码挑剔:
$_POST['email']
已设置的事实并不意味着其他发布变量也将存在。您确实应该验证所有 输入,因为填写表单并不是向脚本提交数据的唯一方式。但是,安全 是一种确保您可以通过避免误报来利用 PHP 通知的方法。
此外,您可能会喜欢过滤器扩展,这是一个已经可用了一段时间但并不是特别普遍的功能,它允许这样的代码:
$name = filter_input(INPUT_POST, 'name');
$email = filter_input(INPUT_POST, 'email');
$postcode = filter_input(INPUT_POST, 'postcode'); //not used
$password = filter_input(INPUT_POST, 'password');
我从来不喜欢计算结果集中的行数来验证用户是否存在的技术,因为它过于依赖外部因素(数据库驱动程序、使用的查询函数...)。我只是获取行,这还允许为 session 变量检索额外的用户数据。
我想 $uuid
是在 generate_uuid.php
中定义的,但是当您查看代码时,它似乎不知从哪里冒出来。更好的结构是您包含的文件加载函数,然后调用这些函数:
$uuid = generate_uuid();
$stmt->bind_param('ssss', $name, $email, $hash, $uuid);
...但是,正如我所说,这些因素都不会影响安全。
关于php - 这是关于安全性和 MySQL 的良好做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38142625/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!