PHP中通过语义URL防止网站被攻击的方法分享

2019-04-08 23:46:20刘景俊


如果使用session 跟踪,可以很方便地避免上述情况的发生:

<?php
session_start();
$clean = array();
$email_pattern = '/^[^@s<&>]+@([-a-z0-9]+.)+[a-z]{2,}$/i';
if (preg_match($email_pattern, $_POST['email']))
{
$clean['email'] = $_POST['email'];
$user = $_SESSION['user'];
$new_password = md5(uniqid(rand(), TRUE));
if ($_SESSION['verified'])
{
/* Update Password */
mail($clean['email'], 'Your New Password', $new_password);
}
}
?>

尽管上例省略了一些细节(如更详细的email 信息或一个合理的密码),但它示范了对用户提供的帐户不加以信任,同时更重要的是使用session 变量为保存用户是否正确回答了问题($_SESSION['verified']),以及正确回答问题的用户($_SESSION['user'])。正是这种不信任的做法是防止你的应用产生漏洞的关键。

其实,只要记住以下的原则就行了!

不要相信任何用户的输入(也就是对用户的输入做检测,虽然,写起来比较麻烦,但总比出了问题在解决要来的及时吧!)
相关文章 大家在看