我正在开发一些简单功能的基本API。我正在捕获如下输入:

if ($action == 'delete' && isset($_POST['targetId']) && isset($_POST['userId'])) {
//The isset causes "Do not access Superglobal _POST array directly" warning in Netbeans
        $userId = filter_input(INPUT_POST, 'userId');
        $beamId = filter_input(INPUT_POST, 'targetId');
}


我是否应该甚至还要使用filter_input来检查是否设置了该值?喜欢:

if ($action == 'delete' && filter_input(INPUT_POST, 'targetId') && filter_input(INPUT_POST, 'userId')) {

}


我不在这里查看选项,而是我对最正确的解决方案感到满意,该解决方案既安全又可以防止黑客入侵。

编辑:是的,以上信息将用作SQL的输入

最佳答案

filter_input用于清除或检查输入的数据类型。它用于确保所需的数据为必需格式,并且可以使用必需的过滤器对其进行清理。在您的情况下,isset将检查是否设置了必需的变量(或者不是NULL)。因此两者都有不同的用例。我不认为直接在POST项目上使用isset是很糟糕的,但我建议使用filter_input以便可以验证数据。

关于php - 在PHP中正确使用isset和filter_input,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23731976/

10-12 07:40