我有一个网站,用户使用 AJAX 向名为 like.php
的文件提交消息。在此文件中,用户消息被提交到数据库,然后它向用户发送回链接。在我的 Javascript 代码中,我禁用了用户在提交 AJAX 请求时输入的文本框。
唯一的问题是,恶意用户可以不断地向 like.php
发送 POST 请求并淹没我的数据库。所以我想实现简单的防洪。
我真的不希望另一个数据库表记录用户 IP 等的麻烦......就好像它们正在淹没我的网站一样,大量的数据库读/写会减慢它的速度。我考虑过使用 session ,比如有一个包含时间戳的 session ,每次他们将数据发送到 like.php
时都会检查该时间戳,如果当前时间早于时间戳,则让他们将数据添加到数据库,否则发出错误并阻止它们。如果允许他们向数据库中输入某些内容,请使用新的时间戳更新他们的 session 。
你怎么看?这是解决问题的最佳方法还是有更简单的替代方法?
感谢您的帮助。 :)
最佳答案
Session 最容易做到这一点,开销也最少。您可以在 session 中存储两位数据,最后一个帖子的时间戳,和帖子来自的 ip。下面是检查合法性的方法:
session_start();
if(isset($_SESSION['ip']) && $_SESSION['last_post'] + MININTERVAL < time()) die('too early');
$_SESSION['last_post'] = time();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
// store the message
关于php - 快速简便的防洪措施?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026640/