下午好。
我是PHP编程的初学者,接受过一些课程并掌握了理论知识。我现在已经被录用并获得一些基本的'任务。这里的同事告诉我,现实世界'代码与大学,书籍等中的代码略有不同。我一直在阅读有关安全性的文章,并了解了SQL注入问题。我还了解到,避免使用它们的最佳方法是使用预处理语句和参数绑定。
所以,如果您能就以下代码向我提出您的意见或建议,我将非常感激。请你说的任何话都非常有用。关于代码逻辑,结构,性能,安全性......任何事情的意见。
if (isset($_POST['username']) && isset($_POST['password']))
{
$dbaddress = 'myhost';
$dbuname = "database_user";
$dbpass = "database_password";
$dbname = 'customers_db';
$r = new mysqli($dbaddress, $dbuname, $dbpass, $dbname);
$q = $r->prepare("SELECT * FROM users WHERE uAccessName = ? AND uAccessPass = ?");
$q->bind_param("ss", $user, $pass);
$user = $_POST['username'];
$pass = $_POST['password'];
$q->execute();
$q->store_result();
if ($q->num_rows === 1)
// Do many many other things here
echo "<h1>Access granted</h1>";
else
echo "<h1>Access denied</h1>";
$q->close();
$r->close();
} else {
// Handle the case where the form sent no data
}
非常感谢。
答案 0 :(得分:-1)
请参阅此链接,这是关于在php中提供安全性的讨论
答案 1 :(得分:-1)
不要以纯文本格式存储数据库密码。使用双向加密算法,以便您可以以加密形式存储数据库密码,但仍可以在数据库查询中使用它
还使用filter_var或类似的Php函数清理POST变量。