2013-04-29 136 views
0

我在我的网站上有一些简单的脚本,允许用户完成像 计算日期差异,做数学计算等任务。该网站大约95% 纯html(不生成php),除一些jquery/ajax将用户输入 发布到服务器端来执行计算。 Ajax代码如下:php安全和ajax请求

$.ajax({ 
    type: "POST", 
    url: "script/calc.php", 
    data: { userval:val}, 
    success: function(response){ 
    //display response 
    } 
}); 

当用户输入值/应该是在PHP 文件“calc.php”的帖子变量之前的数字我想补充(INT),即使在安全方面我不认为它可以带来任何问题。

过滤HTTP_REFERER的

即时通讯思想,所以PHP文件只得到从我的网站 (以避免任何滥用)的要求,但我读过,只在HTTP_REFERER计数不是最终 把戏,因为它依赖于用户的浏览器有时它可能是空的。在另一个 手中,我知道默认情况下ajax将不允许发布到另一个域,但是也存在一个针对 的攻击。

我不是一个硬派的安全人员,我知道一些基本知识,所以有什么你们可以建议我吗?在这种情况下可能会出现什么问题。请注意,我不使用任何 数据库,只有一个php文件,它只是进行一些计算,没有其他任何东西(没有任何 像访问任何目录,文件上传或类似的东西)。

还有什么我应该认真考虑的,防止服务器滥用,xss攻击或者是类似的吗?

编辑:所以基本上calc.php具有像这样的结构(非常简单)

//期待的整数 $ userval =(int)的$ _POST [ 'userval'];

$ total_sum =($ userval * 15)*(150 *($ userval-2));

echo $ total_sum; 未设置($ total_sum);

// //结束

+0

大部分安全问题归结为消毒用户输入数据。大多数马裤是由于缺乏。 – 2013-04-29 20:57:05

+0

好,为了告诉你脚本/ calc.php是否有问题,我们需要查看源代码(或至少它的一大块)。 – Blender 2013-04-29 20:58:07

回答

0
  1. AJAX使用JavaScript其中有SOP(SAME渊源考政策),了解它http://en.wikipedia.org/wiki/Same_origin_policy

  2. 检查你有什么样的输入。如果你期望的数字检查他们在PHP和铸(INT)或INTVAL()

  3. 输入数据需要什么?如果你不把任何东西放到数据库中,你不会改变你的文件,你用什么输入?

  4. 如果您有字符串并验证它们,您可以随时使用正则表达式,并且您应该根据要存储它们的位置将它们转义出来。但数字使事情变得更容易。

  5. 您提供的脚本是保存。

  6. 好的做法是记录所有可疑的尝试,如果有太多的,你应该阻止用户。

+0

你好,谢谢你的回答。所以正如我所提到的,大部分脚本都是计算器。 PHP预期一个或两个值,进行一些计算,然后输出结果并将其发布回去:) – inrob 2013-04-29 21:02:56

+0

intval(),is_numeric(),casting - 所有你需要的:) – Robert 2013-04-29 21:04:26

+0

另外,如果我可能会问一个离题问题,这不是一个真正的PHP的核心任务,我会有任何服务器负载的问题,考虑到一个案例,6k用户将同时使用我的网站,没有数据库,所以回声做一些乘法/添加和呼应结果就是php必须做的一切。 – inrob 2013-04-29 21:08:43