我使用此JQuery Ajax Voting system guide作为粗略参考,但我对此的安全性感到有点困扰。现在,本指南基本上存储了某些东西的ID和它的投票统计数据。
我想提出类似的想法但我需要包含userID,因此用户只能投票一次。这存储在PHP会话变量中,我想知道被调用的ajax页面是否可以访问该会话。如果不是,那么传递参数的安全方法是什么,这样就不会被中间人攻击或伪造的人劫持。
答案 0 :(得分:3)
只要在脚本顶部执行session_start();
,服务器就可以通过AJAX调用访问会话数据。您还应该确保清理数据,因为我看到教程正在执行查询而不通过mysql_real_escape_string
传递数据。您还应该在投票表上执行UNIQUE KEY(user_id, id)
以确保没有欺骗行为。
答案 1 :(得分:1)
您应该能够从实际存储用户投票的处理程序中提取相同的Session变量。
作为一项基本安全措施,您可以在AJAX调用之前使用投票加密页面上的UserId,并在执行插入时解密UserId(如果在会话中不可用)。