PayPal PHP IPN示例是什么POST序列化问题?

PayPal的 PHP IPN侦听器的示例代码在顶部有这个注释/代码:
// reading posted data from directly from $_POST causes serialization 
// issues with array data in POST
// reading raw POST data from input stream instead. 
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&',$raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
  $keyval = explode ('=',$keyval);
  if (count($keyval) == 2)
     $myPost[$keyval[0]] = urldecode($keyval[1]);
}

有人可以解释这个评论引用的序列化问题吗?虽然我可以这样做,我会觉得更加舒服,知道为什么应该这样做.

我不能告诉你支付宝的动机,但我可以猜测:php喜欢从http请求更改输入变量的键.

例如,名称a.b [将显示为$_POST [‘a_b__’]. php将用下划线替换空格,圆点和打开括号:
来源:http://php.net/manual/en/language.variables.external.php

此外,php将解析出形成匹配的变量名称中的匹配括号到嵌套数组中.例如,arr [a] [b]将显示为$_POST [‘a’] [‘b’].
http://php.net/manual/en/faq.html.php#faq.html.arrays

此外,当括号不正确时,php表现为各种疯狂和越野车:
https://bugs.php.net/bug.php?id=48597

此外,magic_quotes_gpc用于将其爪子安装到每个php安装中,在某些情况下更改变量的名称. http://php.net/manual/en/security.magicquotes.php

此外,php具有arg_seperator.input设置,有些人喜欢将其设置为& amp; amp; amp;而不是只是&贝宝不知道你喜欢什么,显然总是使用&
http://php.net/manual/en/ini.core.php#ini.arg-separator.input

另外,尽管做错了,但在php代码/库中自动修改诸如$_POST的请求输入,例如xss“清理”它们或其他这样的交叉问题并不常见.

通过手动解析输入,您可以避免所有潜在的问题.这个决定看起来好像是很好的工程.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧