gpt4 book ai didi

python - PayPal:如何清理动态创建的加密网站支付按钮的字段值?

转载 作者:太空狗 更新时间:2023-10-30 00:19:50 24 4
gpt4 key购买 nike

我们已经成功地在我们的 Python+pyramid 程序中实现了 PayPal 的加密网站支付,除了一个小细节:输入清理。即,我们希望通过从我们的用户数据库向 PayPal 提供尽可能多的数据来帮助用户。现在,我想到恶意用户可以将他的名字更改为“Mr Hacker\nprice=0.00”或类似名称,从而完全否定 EWP 提供的安全性。我确实尝试过对值进行 URL 编码,但 PayPal 似乎没有解码文件中的转义百分比。

我们的代码基于 django-paypal 库;该库完全忽略了这个问题,没有任何检查就愉快地输出裸名称=值对:

    plaintext = 'cert_id=%s\n' % CERT_ID
for name, field in self.fields.iteritems():
value = None
if name in self.initial:
value = self.initial[name]
elif field.initial is not None:
value = field.initial
if value is not None:
# @@@ Make this less hackish and put it in the widget.
if name == "return_url":
name = "return"
plaintext += u'%s=%s\n' % (name, value)
plaintext = plaintext.encode('utf-8')

那么,如何正确格式化动态加密按钮的输入呢?或者是否有更好的方法在 Website Payments Standard 中实现类似功能来避免此问题,同时又安全?

更新

我们制作的是一个字符串,内容如下

item_number=BASIC
p3=1
cmd=_xclick-subscriptions
business=business@business.com
src=1
item_name=Percent%20encoding%20and%20UTF-8:%20%C3%B6
charset=UTF-8
t3=M
a3=10.0
sra=1
cert_id=ABCDEFGHIJKLM
currency_code=EUR

并为 EWP 加密;用户将表单发布到 https://www.sandbox.paypal.com/cgi-bin/webscr .当用户单击该按钮时,PayPal 页面“登录以完成结帐”显示的项目名称为“Percent%20encoding%20and%20UTF-8:%20%C3%B6”。因此,对于 EWP 输入,百分比编码似乎未被解码。

最佳答案

您可以使用正则表达式过滤掉键值对;

>>> import re
>>> text = 'Mr Hacker\nprice=0.00\nsecurity=false'
>>> re.sub('[\n][^\s]+=[^\s]*', '', text)
'Mr Hacker'

或者更简单,在第一个换行符之后丢弃所有内容;

>>> text.splitlines()[0]
'Mr Hacker'

后者假定第一行是正确的,但事实可能并非如此。

关于python - PayPal:如何清理动态创建的加密网站支付按钮的字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com