Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Perl中使用JSON对象通过POST传递数据而不是查询字符串?_Json_Perl_Post_Cgi Bin - Fatal编程技术网

为什么在Perl中使用JSON对象通过POST传递数据而不是查询字符串?

为什么在Perl中使用JSON对象通过POST传递数据而不是查询字符串?,json,perl,post,cgi-bin,Json,Perl,Post,Cgi Bin,我希望使用Stripe.pm运行一个脚本,基本上希望进行信用卡处理。信用卡号码根本没有通过。我看到的所有示例都使用POST调用中传递的JSON对象,但我有很多使用查询字符串的经验 http://www.example.com/cgi-bin/processingscript.pl?param1=XXXX&param2=YYYYY&param3=ZZZZZ 这是安全风险吗?与我习惯使用的查询字符串相比,使用JSON发布有什么优点或缺点 安全 -确保用户/服务器以外的任何人都不知

我希望使用Stripe.pm运行一个脚本,基本上希望进行信用卡处理。信用卡号码根本没有通过。我看到的所有示例都使用POST调用中传递的JSON对象,但我有很多使用查询字符串的经验

 http://www.example.com/cgi-bin/processingscript.pl?param1=XXXX&param2=YYYYY&param3=ZZZZZ
这是安全风险吗?与我习惯使用的查询字符串相比,使用JSON发布有什么优点或缺点

安全 -确保用户/服务器以外的任何人都不知道数据获取/发布没有影响。使用SSL来确保这一点。 -停止用户向脚本传递“有趣”的参数。POST具有一定的隐蔽性,因为大多数用户看不到参数,但它不是真正的安全性。您应该检查应用程序中的参数以涵盖这一点

一般来说,使用漂亮的数据包(如JSON)发布有助于实现更灵活、更可维护的应用程序界面,其优点是您不必像使用GET时那样担心参数的编码和长度。

POST:

  • 重要数据通常更安全
  • url中未显示参数
  • 与使用GET相比,您可以传递更长的字符串结构(例如JSON),GET对您发送的参数具有长度限制

从纯技术角度来看,如果传递一个合理的短参数,POST和GET之间没有区别。您也可以将JSON作为GET参数传递。没问题:

GET foo.pl?json={'foo':'bar'}
在这种情况下,对数据进行url编码是有意义的。您也可以使用POST发送相同的请求

如果您根本不想使用查询参数,则需要POST并将JSON放入请求体中。根据您选择的选项,在Perl中如何处理它存在差异。假设您正在使用CGI模块。。。Perl对POST和GET参数没有区别

对于查询字符串GET或POST,需要执行以下操作:

use CGI;
my $cgi = CGI->new;
my $json = $cgi->param('json');
use CGI;
my $cgi = CGI->new;
$cgi->param('POSTDATA');
如果将有效负载直接放入请求主体,则需要执行以下操作:

use CGI;
my $cgi = CGI->new;
my $json = $cgi->param('json');
use CGI;
my $cgi = CGI->new;
$cgi->param('POSTDATA');
这在CGI中记录在下

对于JSON,当然还有解析它所需的时间,但这应该可以忽略不计

与内部没有JSON的查询字符串相比,JSON的优势在于,您可以在JSON内部编码任意复杂的数据结构,而纯文本查询字符串只有一层深度


从安全的角度来看,几乎所有的话都说了。我将重述我自己的想法:

  • 使用SSL
  • 不要将敏感内容放入日志文件中
  • 如果您正在处理CC数据(即使不是数字本身),请格外小心;在传输过程中读取并加密内容
  • 永远不要存储cvc
  • 如果您想了解有关该主题的更多信息,有一个名为的堆栈交换站点

查询字符串的问题是1)它通常被记录在日志中,如果有任何敏感信息,这将是不好的;2)浏览器和服务器通常对查询字符串的长度有限制。我不明白;运行脚本与接受HTTP请求有什么关系?你能更好地描述一下你想写什么以及谁提供了你所说的输入吗?我会首先使用
SSL
,然后考虑GET vs POST。