1

PHP:

$var = "Sum Random'z String"s with quotemarks"
$send = base64_encode($var)

然后它将base64编码的字符串发送到服务器。

服务器部分(Python)尝试解码 base64 编码的内容并将其写入文件:

f = open("/root/data.yml","w")
f.write(base64.b64decode(sys.argv[1]))
f.close()

sys.argv[1] 是 $send

但是,当我在nanocat中打开 data.yml 时,我得到了这个:

Sum Random\'z String\"s with quotemarks

我不想\那里。当我在nanocat中打开它时,有没有办法让 \ 字符不会出现在那里?我要改变什么? 编辑: $var 取自没有 \ 的 textarea

4

5 回答 5

4

您不需要同时转义单引号和双引号。您只需要使用 (ie ")转义引用字符串的内容

$var = "Sum Random'z String\"s with quotemarks";

这可能不是您唯一的问题。但这是问题的一部分。

更新

根据您$var使用表单文本区域中的数据设置的更新,您需要查看stripslashes()

于 2011-06-27T18:15:14.043 回答
1

我认为这里的问题是您转义了一个不需要转义的字符,不需要转义双 qoutes 内的单个 qoutres,反之亦然。

例子:

OK; " ' "
OK; ' " '
NO; ' ' '
OK; ' \' '
NO; " " "
OK; " \" "

尝试执行以下操作:

$var = 'Sum Random\'z String"s with quotemarks';
$send = base64_encode($var);

编辑:您从未说过它来自文本区域,stripslashes请在编码之前尝试运行该值。

于 2011-06-27T18:17:59.857 回答
0

php 对我来说看起来不错。我敢打赌,有一些安全机制可以将危险人物从你背后逃脱。

您可以使用相当于 python 中的stripslashes 自己对它们进行转义。

于 2011-06-27T18:18:02.467 回答
0

听起来好像在 PHP 中启用了魔术引号。

如果您有权访问,您可以编辑 php.ini 或在发送数据之前尝试此操作:ini_set('magic_quotes_runtime', 0);

于 2011-06-27T18:22:06.200 回答
-1

试试这个:-

f = open("/root/data.yml","w")
x = base64.b64decode(sys.argv[1])
x.replace("\"", "")
f.write(x)
f.close()

希望能帮助到你。

于 2011-06-27T18:20:13.197 回答