动态类型语言和远程方法调用

时间:2011-05-31 06:36:51

标签: php mysql flash flex

有些人可能知道可以从Flash远程调用PHP方法。 有时,远程PHP方法的输入参数是整数数组。 因为PHP是动态类型的,所以攻击者可以传递任何数组。 必须在SQL查询中使用整数数组。 目前我正在阻止这样的注射:

foreach ($unsafeArray as $value)
    $safeArray[] = (int)$value;

你会推荐什么?也许我应该开始使用Java:D

2 个答案:

答案 0 :(得分:1)

您可以使用:$aSafeArray = array_map('intval', $aUnsafeArray);来确保所有传递的值都是整数。

我的建议是开始使用prepared statements! 例如:

$o->bindParam(':anint', $iInt, PDO::PARAM_INT);

答案 1 :(得分:0)

  

你会推荐什么?

我不是Flash专家,但确实可以通过知道其名称来调用PHP方法,并且参数可以作为数组传递。所以问题实际上不是远程方法调用,而是输入过滤和验证。

根据意图的行为,我会使用intval而不是硬转换为int(AFAIR它会在无效值上返回0),否则你可能抛出异常或其他什么。你必须先定义它的行为。

  

也许我应该开始使用Java

不,除非您在开发速度和编译和运行时的大量内存需求方面都需要一个臃肿的解决方案:p