目录
什么是$_REQUEST ,为什么request_order很重要?
request_order如何影响变量优先级
常见的陷阱和安全含义
输入处理的最佳实践
概括
首页 后端开发 php教程 掌握输入控制:php.ini中的``request_order''

掌握输入控制:php.ini中的``request_order''

Aug 08, 2025 pm 06:02 PM
PHP - $_REQUEST

php.ini中的request_order指令确定将哪些数据源(GET,POST,cookie)合并为$ _request及其优先顺序;例如,request_order =“ gp”表示$ _request仅包含get和张贴数据,而在键冲突时,邮政为aptriding get;理解这一点至关重要,因为不当使用$ _request会导致安全漏洞,例如意外输入源或旁路,就像$ _request ['action']允许使用URL触发的操作(如帐户删除);最佳实践包括完全避免使用$ _request,明确使用$ _get,$ _ post或$ _cookie,审核php.ini设置,标准化环境,并严格验证所有输入。

掌握输入控制:php.ini中的``request_order

与PHP一起工作时,了解如何处理用户输入并在$_GET$_POST$_COOKIE (例如功能和安全性都至关重要的超级全局中)。塑造此行为的密钥配置是php.ini中的request_order 。该指令直接控制数据最终以$_REQUEST形式进行,并且知道其工作原理有助于您避免错误,混乱和潜在的漏洞。

掌握输入控制:php.ini中的``request_order

什么是$_REQUEST ,为什么request_order很重要?

$_REQUEST是一种php超级全局,默认情况下,将变量从$_GET$_POST$_COOKIE组合到单个数组中。但是,它并不总是包括所有三个。合并了哪些源取决于php.ini中的request_ordervariables_order指令。

request_order设置专门定义了$_REQUEST填充的顺序和来源。例如:

掌握输入控制:php.ini中的``request_order
 request_order =“ GP”

表示$_REQUEST将仅按照该顺序包括GETPOST数据。

如果未设置request_order ,则php落后于variables_order ,这不仅会影响$_REQUEST ,还会影响哪些超级全球群体填充。

掌握输入控制:php.ini中的``request_order

request_order如何影响变量优先级

request_order最重要的含义之一是可变优先级。由于$_REQUEST合并了来自多个来源的输入,因此当相同的密钥中存在相同的密钥时,可能会出现冲突(例如,通过get传递并通过邮政提交的user_id )。

request_order中指定的订单确定哪个值赢:

  • request_order = "GP" →帖子覆盖获取
  • request_order = "CG" →获得覆盖cookie
  • request_order = "GPC" →帖子覆盖获得,它覆盖了cookie

因此,如果您有:

 // url:/page.php?user_id=1
//发布:user_id = 5

然后request_order = "GP" ,然后:

 echo $ _request ['user_id']; //输出:5

这种行为是微妙但至关重要的 - 尤其是在编写依赖$_REQUEST的代码而不意识到cookie或获取参数可能会被默默覆盖时。

常见的陷阱和安全含义

使用$_REQUEST而不了解request_order可能会导致实际问题:

  • 意外的输入来源:您可能会认为您正在阅读帖子数据,但是如果request_order包含get,并且在URL中存在一个参数,则可以使用它。
  • 安全旁路:如果您的身份验证逻辑检查$_REQUEST['token'] ,攻击者可能会通过通过get或恶意cookie注入令牌来绕过唯一的期望。
  • 跨环境的行为不一致:开发与生产服务器可能具有不同的request_order设置,导致难以复制的错误。

例如,考虑此缺陷的代码:

 if($ _request ['action'] ==='delete'){
    deleteaccount();
}

如果request_order允许get,请访问/profile.php?action=delete删除触发器删除 - 不需要表单提交。这是明显的安全风险。

输入处理的最佳实践

为了避免惊喜,请遵循以下准则:

  • 除非绝对必要,否则避免$_REQUEST 。明确使用$_GET$_POST$_COOKIE使您的意图清晰。
  • 审核您的php.ini设置。知道设置了什么request_order 。寻找:
     request_order =“ GP”

    或类似。如果是空的,请检查variables_order

  • 标准化环境。确保request_order在开发,分期和生产中保持一致。
  • 无论来源如何,都严格验证和消毒输入
  • 处理敏感操作时,请使用CSRF令牌并检查请求方法
  • 概括

    php.ini中的request_order指令不仅仅是一种较小的配置,它定义了$_REQUEST行为,影响输入优先级的影响,并且会默默影响应用程序逻辑和安全性。通过理解和控制此设置,并通过$_REQUEST优先考虑明确的超级全球,可以更好地控制PHP中的输入处理。

    基本上:了解您的request_order ,不要让PHP猜测您的数据应该来自何处。

    以上是掌握输入控制:php.ini中的``request_order''的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1604
29
PHP教程
1510
276
使用PHP的$ _request超级全局的固有安全风险 使用PHP的$ _request超级全局的固有安全风险 Aug 02, 2025 am 01:30 AM

UsingPHP’s$_REQUESTsuperglobalintroducessecurityrisksbecauseitcombinesinputfrom$_GET,$_POST,and$_COOKIE,leadingtounpredictablebehavior;2.Itallowsunintendedinputsourcestooverrideintendedones,suchasamaliciouscookietriggeringadeleteactionmeanttocomefrom

超越卫生化:$ _request的数据歧义的基本问题 超越卫生化:$ _request的数据歧义的基本问题 Aug 03, 2025 am 04:23 AM

Using$_REQUESTintroducesdataambiguitybymerginginputsfrom$_GET,$_POST,and$_COOKIE,makingitimpossibletodeterminethesourceofdata.2.Thisunpredictabilityweakenssecuritybecausedifferentsourceshavedifferenttrustlevelsandattackvectors,suchasCSRFviaGETorsessi

解构危险:为什么现代PHP开发人员避免$ _request 解构危险:为什么现代PHP开发人员避免$ _request Aug 02, 2025 pm 03:10 PM

$_REQUESTisdiscouragedinmodernPHPbecauseitmergesinputfrom$_GET,$_POST,and$_COOKIE,creatingsourceambiguitythatunderminessecurityandpredictability.2.Thisambiguityenablesattackssuchascookietampering,requestmethodconfusion,andCSRFbypass,asseenwhenamalici

揭开$ _request的奥秘:获得,张贴和饼干发生冲突 揭开$ _request的奥秘:获得,张贴和饼干发生冲突 Aug 06, 2025 am 08:06 AM

$_REQUEST合并GET、POST和COOKIE数据,但存在安全和可预测性风险;当键冲突时,其覆盖顺序由php.ini中的variables_order或request_order决定,默认为EGPCS,即POST覆盖GET,GET覆盖COOKIE;例如,当GET、POST和COOKIE中均有"user"参数时,POST值胜出;使用$_REQUEST可能导致安全漏洞、行为不可预测及测试困难;最佳实践是避免使用$_REQUEST,而应明确使用$_GET、$_POST或$_C

从$ _request到请求对象:现代框架中输入处理的演变 从$ _request到请求对象:现代框架中输入处理的演变 Aug 06, 2025 am 06:37 AM

从$ _requestToreQuestObjectSrepresentsamajorimProvementInphpDevelopment.1.RequestObjectSabstractstractsuperglobalsIntoAclean,一致,消除,消除bighancebiguityaboutinputsources.2.theyeneenenhancesecuritybutinable andfiritiatiand

深入研究$ _request vs. $ _ post vs. $ _get:理解优先级和陷阱 深入研究$ _request vs. $ _ post vs. $ _get:理解优先级和陷阱 Aug 06, 2025 pm 05:42 PM

避免使用$ _requestDuetunPrediCtabledAtasOutAtasOudatAseCurityRisks; 2.使用$ _getForideMpotEntoperationsLikeFiltering,$ _ forportate-forState-forState-changingactionsLikeFormSubmission; 3.thevaluein $ _requestdeplysonRequestDeptsonRequestDepliandeptsonRequestDeppedsonRequestdeppedsonrequestdepliandeplyquior_ $ quiorQiorQiorQiorQiorquior lade teedtotosent;

掌握输入控制:php.ini中的``request_order'' 掌握输入控制:php.ini中的``request_order'' Aug 08, 2025 pm 06:02 PM

terequest_orderdireativeinphp.inidetermineswhichdatasources(get,post,cookie)aremergedInto $ _requestandtheirprecedenceOrder; tofexample,request_orders_order =“ gp”表示$ _requequestincludesonlygudesonlygudesonlygetandpostdata,withpostostobostostostostoverristoverristoderristingwhenenekeysConteNekeySconaneNekeysConfort;

确保您的应用程序:为什么明确$ _get和$ _post优于$ _request 确保您的应用程序:为什么明确$ _get和$ _post优于$ _request Aug 08, 2025 pm 05:18 PM

Using$_GETand$_POSTinsteadof$_REQUESTismoresecurebecauseitensurespredictableinputsources,2.ItpreventsparameterconflictsduetooverlappingnamesinGET,POST,andCOOKIE,3.ItstrengthensdefensesagainstCSRFbyenforcingrequestmethodintegrity,4.Itimprovescodeclari

See all articles