如何在使用php的登录系统中使用随机数以避免重播攻击?

我已经使用PHP创建了一个登录注册系统.我打算使用随机数来防止重播攻击.到目前为止,我所拥有的是,使用(uniqid(mt_rand(),true))生成一个随机数;然后将其存储在数据库中,并将相同的数据在隐藏字段中传递给客户端,然后在单击登录按钮时将其发送回服务器端.如果它与数据库中的on匹配,则将用户重定向到私有页面,然后在数据库生成并更新一个新的现时值.

这就是我打算实现的方式.但是我对执行情况不太确定.

解决方法:

<?PHP
session_start();
//Check nonce against session
if(isset($_POST) && $_POST["nonce"] === $_SESSION["csrf"]){
    //save data
    //redirect
}
//generate new nonce for form
$_SESSION["csrf"] = uniqid(mt_rand(),true);
?>
<form method="post" action="<?PHP echo $_SERVER['REQUEST_URI'] ?>">
    <input type="hidden" name="nonce" value="<?PHP echo $_SESSION['csrf']; ?>"/>
    <!-- other form fields -->
    <!-- submit button -->
</form>

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...