AJAX - 如何保护我的ajax / php功能不被垃圾邮件?

时间:2014-12-14 12:04:08

标签: javascript php jquery mysql ajax

我目前正在重新设计我的网站 - 这是一个拥有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个游戏的列表。它似乎有点限制,我想知道是否有更好的方法来处理这种垃圾邮件功能。

1 个答案:

答案 0 :(得分:1)

没有灵丹妙药,遗憾的是,您可能必须实施一系列措施,强制执行服务器端:

  • 各种类型的费率限制(例如,每个IP)(取决于您网站的使用模式)

  • 仅允许除已知管理会话之外的小请求

  • 可能会锁定允许管理员会话的IP

  • 如果网站的用户界面仅在操作Y之后允许操作X,则服务器端拒绝操作X,如果有问题的会话之前没有在相关时间内完成操作

......等等。 Stack Exchange系统多年来一直在用这些东西玩耍(非常成功),所以可以做到,但是你必须保持警惕并观察网站上的使用模式虐待,然后采取新措施来减少这些虐待......