php 安全评论逻辑?

标签 php database logic

好的,这可能很明显,但还没有完全点击。我正在创建一个论坛/博客风格的应用程序。

我相当安全地从数据库中获取帖子,但评论开始有点困难了。 (我可能只是偏执,对吧?)。

如何在不暴露父消息 ID 的情况下添加评论? (比如在隐藏的表单字段或查询字符串中,或​​其他东西)。

我想我有点偏执,认为有人可能会使用 Firebug 或其他东西进入代码,并在提交前将隐藏的表单字段值更改为其他值。我想我必须确保用户有权对该特定帖子/类别发表评论?

注意事项: 用户已经登录。 这不是公开帖子

最佳答案

我建议您像这样设置数据库:

Comments
---------
id
encodedID
authorID
parentID
message

然后,因为表单字段有两个隐藏值,一个是 encodedID,第二个是您创建的哈希值。我建议散列为:

<?php

$hash = sha1(md5($encodedID . $userID . $_SERVER['REMOTE_ADDR'] . "abc1234"));

?>

然后,当用户提交表单时,验证哈希对于特定的 encodedID 和用户是否有效。这是一个简短的代码:

<?php

if(isset($_POST['submit']))
{
    //Get the variables and all and sanitize the input of 'message'
    if(sha1(md5($_POST['value1']. $userID . $_SERVER['REMOTE_ADDR'] . "abc1234")) == $_POST['value2'])
    {
        //User is valid.
    }
    else
    {
        //Invalid user.
        //Document this.
    }
}

$value1 = $encodedID; //Grab this from your database
$value2 = sha1(md5($value1 . $userID . $_SERVER['REMOTE_ADDR'] . "abc1234"));
?>

<form method="post" action="comment.php">
<input type="text" name="message" />
<input type="hidden" name="value1" value="<?php echo $value1; ?>" />
<input type="hidden" name="value2" value="<?php echo $value2; ?>" />
<input type="submit" name="submit" value="Comment" />
</form>

编辑: 只是一个小提示,但我建议您将 value1 和 value2 更改为抽象的东西,不要将其称为 encodedID 或类似名称,以免混淆任何用户将尝试打破它。

是的,md5 和 sha1 并不完全安全,但对于这种情况,它会起作用,因为您希望能够快速有效地处理评论。

关于php 安全评论逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6195061/

相关文章:

php - mysql 查询 wp_post 列表和类别和日期

php - 得到分组记录的总和

php - 如何从命令行获取所有 php fpm 池的列表?

mysql - 尝试修改 MYSQL 中的列数据类型时出错

mysql - 重置 auto_increment 是否会重新订购 ID?

C# 频闪仪,Thread.Sleep

php - 正确格式化 JSON 文件

C# WinForms - 如何将更新从 DataGridView 发送到数据库

java - 如何快速编写下面的changeValue函数?

ruby - 可与 Ruby 交互的轻量级推理引擎