【发布时间】:2014-12-14 12:04:07
【问题描述】:
我目前正在重新设计我的网站 - 这是一个包含 2,000 多个 Flash 游戏的游戏厅。几年前我为我设计/创建了这个网站,我自己承担了它的现代化。 我遇到了一个我担心的特殊问题,过去该网站曾遭到黑客攻击,并且曾一度容易受到 mysql 注入的攻击,但此后已得到修复。 不过,问题出在这里——当前站点使用了过多的 PHP。我不喜欢这样,所以我想我会尝试通过在必要时使用 javascript 来减少很多服务器压力。例如,它经常需要从数据库中检索游戏列表。 我正在使用 Jquery 的 post() 函数将一组 id 传递给名为“get-games.php”的 php 有点像这样:
$.post( "ajax/get-games.php", { ids:ids } , function( data ) {
//create games list with response data
});
有什么办法可以阻止有人用 500 个 id 反复恶意调用这个函数?有一个明显的答案 - 在 get-games.php 中添加如下内容:
if (ids.length > 100) throw an error
但有时我可能想检索超过 100 个游戏的列表,可能在管理面板上。这似乎有点限制,我想知道是否有更好的方法来处理这种垃圾邮件功能。
【问题讨论】:
-
您可以实施每个 IP 的速率限制。
-
您还可以为经常使用的请求实现缓存策略。以及对
ids数组的一些逻辑测试,例如最大长度。 -
@Barmar 你能推荐一些教程或代码示例吗?
-
附带问题 - 对不同的 php 采取不同的操作是一种好习惯吗?因此,在上面的示例中,我使用了“ajax/get-games.php”——如果我有一个更通用的 php,它包含所有必要的函数,如“ajax.php”,可以为每个 ajax 请求提供服务,那会更有效吗?否则当 ajax 函数相互引用时,我无疑需要使用大量的“包含”。
标签: javascript php jquery mysql ajax