相关疑难解决方法(0)

通过在会话变量和表单中存储nonce来保护CSRF

要防止CSRF,您应该将nonce放在表单中的隐藏字段中,以及cookie或会话变量中.但是如果用户在不同的标签页中打开多个页面会怎么样 在这种情况下,每个选项卡都有一个具有唯一nonce的表单,但会话变量或cookie中只存储一个nonce.或者,如果您尝试将所有nonce存储在cookie/session变量中,您将如何识别哪个属于哪个表单?

security csrf

10
推荐指数
1
解决办法
8745
查看次数

如何让$ _GET更安全.

我正在使用get方法执行一些操作,例如,批准,markasspam,删除,用于评论系统.我知道走这条路是非常不安全但我无法帮助它.因为使用$ _GET方法的原因是使用PHP_SELF在页面本身内执行操作,而FYI我也使用post方法使用复选框来执行操作.

现在为了让它有点安全我想随机化数字或生成哈希或其他东西,然后比较它,获取id并执行操作

我目前的代码有点像这样.

<?php 
if($approve == 1 ) 
{ 
    ?>
    <a href="<?php echo $_SERVER['PHP_SELF']."?approve=".$id; ?>">Unapprove</a>
    <?php 
} else 
{ 
    ?> 
    <a href="<?php echo $_SERVER['PHP_SELF']."?unapprove=".$id; ?>">Approve</a>
    <?php 
}
?> 
| <a href="<?php echo $_SERVER['PHP_SELF']."?spam=".$id; ?>">Spam</a> 
| <a class="edit-comments" href="edit-comments.php?id=<?php echo $id; ?>">Edit</a> 
| <a href="<?php echo $_SERVER['PHP_SELF']."?delete=".$id; ?>">Delete</a>
Run Code Online (Sandbox Code Playgroud)

我用这个代码执行操作..

if(isset($_GET['approve'])) {
    $id = intval($_GET['approve']);
    $query = "UPDATE comments SET approve = '0' WHERE id = '$id'";
    $result = mysql_query($query);
}

if(isset($_GET['unapprove'])) {
    $id = intval($_GET['unapprove']);
    $query = "UPDATE comments SET …
Run Code Online (Sandbox Code Playgroud)

php security get

3
推荐指数
1
解决办法
6267
查看次数

标签 统计

security ×2

csrf ×1

get ×1

php ×1