0

我正在 PHP 中构建一个桥接脚本,以通过 SOAP 连接到本地 Web 服务框架。此脚本是对 Web 服务的唯一公共访问,它通过 GET 获取值、组合查询、将其发送到 Web 服务并通过 JSON 返回结果。脚本采用的变量都应该是字符串。(任何数组都被转换为字符串)。

我的问题是,由于对 Web 服务的唯一公共访问是通过此脚本,是通过 $_GET['...'] 获取参数并将它们直接输出为 SOAP 格式以查询最安全的方法吗?我是否应该对 GET 值执行某种转义以补充 SOAP 本机转义?

(为了清楚起见,我概述了下面的过程。** 是问题所在。)

  1. HTTP GET 到脚本
  2. 脚本将 GET 值存储到变量中**
  3. 将变量组合成 SOAP 查询的格式
  4. 将组合查询发送到 SOAP 服务器
  5. 从 SOAP 服务器接收响应
  6. 以 JSON 格式输出响应

谢谢!

4

1 回答 1

2

从你的问题中很难理解你想逃避什么,但让我们来看看它。

通常,您想要过滤入,转出。这意味着,当您从应用程序之外的任何地方接受输入时,您想要过滤它。

但是过滤器是什么意思?

这意味着确保它是有效的。如果您期望一个字母数字用户名,并且有人用符号传入一个,请拒绝它。那就是过滤...

然后,当您转到输出数据时,您希望专门针对您正在输出的上下文对其进行转义。

因此,如果您在 HTML 正文中编写它,您将使用类似html_special_chars. 如果要发送到数据库,则可以使用准备好的语句或使用特定于 db 的转义算法对其进行转义。

那么,在您的情况下,这会让我们处于什么位置?

好吧,您将它发送到一个库以获取 SOAP 请求。该库应处理 SOAP 请求的转义。

并且考虑到您不知道远程服务将如何处理它(根据上下文),逃避它是远程应用程序的工作。

所以不,你不应该做任何逃避。

但请务必过滤输入以确保它在您期望的域中有效......

于 2013-06-20T14:15:06.230 回答