【问题标题】:How can I control my website's inputs when they are entered by users? [closed]当用户输入我的网站的输入时,我如何控制它们? [关闭]
【发布时间】:2016-08-27 08:27:39
【问题描述】:

我有一个像 SO 这样的问答网站。我对某些设施有一些限制。例如,信誉低于 20 的用户不能投票。或者用户在获得至少 200 名声望之前无法关闭问题。

好吧,还有一些没有任何限制的东西,比如写一个问题的答案。在这种情况下,一个糟糕的用户可以为多个问题编写多个不相关的答案,并使我的数据库变得庞大,包含无用的信息。

所以我想在插入新答案之前我需要检查一些东西,对吗?或者无论如何,我怎样才能管理我网站的输入?正如我所提到的,在我目前的算法中,一个糟糕的用户(如垃圾邮件发送者或黑客)可以简单地在我的数据库中输入大量无用的数据,然后也许我会在 1 天后理解它(为时已晚) 在这种情况下,需要一些时间来阻止他并删除他的所有数据。

总之,我想知道,(例如),像 SO 这样的网站是如何处理的?在插入新答案进行检查之前,我是否需要单独的查询?要不然是啥?

注意:我使用 PHP (用于服务器端代码) 和 MySQL (用于数据库代码)

【问题讨论】:

标签: php mysql database algorithm security


【解决方案1】:

其实很简单。您应该存储上次操作时间并与现在进行比较。

function insertSth(//your args){
    $minimumInsertInterval = 10; // Minimum 10 seconds.
    //You should check if interval ended.
    if( ( microtime() - $_SESSION['lastInsertTime'] ) <= $minimumInsertInterval ){
        //User can't do any operation.
        return false;
    }
    //Insert operations
    //At the end of your insert operations you need to write this microtime to Session.
    $_SESSION['lastInsertTime'] = microtime();
}

【讨论】:

  • 是的,它可以是一种方法.. 谢谢.. 赞成
【解决方案2】:

您需要采取 Erol 所描述的措施,但也需要进行逻辑检查。创建一个描述可能操作的actions 表,并创建一个描述规则的privileges 表。然后在两者之间创建一个表,您将在其中存储每个操作所需的权限。在执行操作之前,请检查是否满足了它所需的所有权限。

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2021-10-01
    • 2020-07-24
    • 2021-06-17
    • 2021-09-07
    • 1970-01-01
    • 2019-05-17
    • 2023-03-16
    相关资源
    最近更新 更多