PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-未定义索引-安全风险vs性能vs代码膨胀大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在一个项目中进行开发,该项目的REST API基本上在开发模式下中断,因为它具有更多的包含错误报告策略.这是该项目中的典型行:

public function someAction() {
   // Returns a map of params => values sent with HTTP req
   $params = $this->getParams();

   // This key may not exist --+
   //                          |
   //                          v
   $someField = $params['someField'] ?: 'default value';
   $someField = $this->sanitizeInput($someField);

   // ...
}

结果,开发人员模式下的JSON响应通常会被PHP乱抛垃圾:注意:未定义的索引警告,这会破坏JSON输出字符串.

我的问题

>假设变量已初始化(尤其是从$_GET或$_POST中提取变量时),安全风险到底是什么(如果有)?
>使用isset()或array_key_exists()遍历对假定的数组键的所有访问是否值得麻烦?
>我在单个键周围添加了isset(),这些键在整个应用程序中的某些操作下会引发未定义索引警告,但是代码现在看起来super肿了…

解决方法:

忽略这样的错误的问题正是您所发现的-调试变得非常痛苦,潜在的实际错误被视为“正常行为”而被忽略.

但是,与编程中的其他时间一样,如果您发现自己一遍又一遍地编写相同的代码,则可能需要编写抽象.

在您的情况下,您可以向该类添加一个附加方法,以及getParams(大概只是返回$_REQUEST的内容),添加一个get@R_800_1403@方法

function getParam($key, $default=null)
{
    return isset($_REQUEST[$key])? $_REQUEST[$key] : $default;
}

然后,您的调用代码将变为:

$someField = $this->getParam('someField', 'default value');

编辑您还可以将卫生调用添加到此方法中:

function getParam($key, $default=null)
{
    return isset($_REQUEST[$key])? $this->sanitizeInput($_REQUEST[$key]) : $default;
}

进一步减少您的呼叫代码.现在,您不仅拥有适当的无错误代码,而且从三行减少了调用代码

$params = $this->getParams();

// This key may not exist --+
//                          |
//                          v
$someField = $params['someField'] ?: 'default value';
$someField = $this->sanitizeInput($someField);

一个

$someField = $this->getParam('someField', 'default value');

大佬总结

以上是大佬教程为你收集整理的php-未定义索引-安全风险vs性能vs代码膨胀全部内容,希望文章能够帮你解决php-未定义索引-安全风险vs性能vs代码膨胀所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: