我想让我的代码尽可能安全,免受任何类型的攻击,我希望对下面使用的简单代码有一些了解。如果有任何关于如何使其更安全(如果它很脆弱)以及为什么会变得更安全的指示,那就太棒了。我读到,使用准备好的语句是防范攻击的最佳实践。
<?php
try {
$conn = new PDO('mysql:host=localhost;dbname=test', 'user', 'XXXXX');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('INSERT INTO people (name, email) VALUES (:name, :email)');
$stmt->execute(array(':name' => $_POST['name'], ':email' => $_POST['email']));
#If one or more rows were returned...
} catch(PDOException $e){
echo'ERROR: ' . $e->getMessage();
}
echo "Added $_POST[name] with email $_POST[email] succsessfully";
$conn = null;
?>
看起来您可以免受 SQL 注入的影响,但现在您的 echo 中存在 XSS 问题。确保您始终在回显之前清理/转义用户输入。
echo "Added $_POST[name] with email $_POST[email] succsessfully";
应该成为
echo "Added" . htmlspecialchars($_POST['name']) . "with email" . htmlspecialchars($_POST['email']) . "succsessfully";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)