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


Dynamically typed languages and remote method invocation

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

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

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

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

我的建议是开始使用事先准备好的陈述!示例:

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

你推荐什么?

我不是flash专家,但实际上,只要知道PHP方法的名称就可以调用它,并且参数可以作为数组传递。因此,问题实际上不是远程方法调用,而是输入过滤和验证。

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

也许我应该开始使用Java

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