\字符添加不应该的位置

时间:2011-06-27 18:11:27

标签: php python ssh ubuntu-11.04

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

然而,当我在 nano cat 中打开data.yml时,我明白了:

Sum Random\'z String\"s with quotemarks

我不想要\那里。 当我在 nano cat 中打开它时,有没有办法让\字符不会出现在那里?我该怎么改变? 修改 $ var取自textarea,其中没有\

5 个答案:

答案 0 :(得分:4)

您无需同时退出单引号和双引号。你只需要逃避你引用字符串的内容(即"

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

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

更新

根据您使用来自表单textarea的数据设置的$var的更新,您需要查看stripslashes()

答案 1 :(得分:1)

我认为这里的问题是你逃脱了一个不需要逃脱的角色,双qoutes内的单个qoutres不需要逃脱,反之亦然。

示例:

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

尝试执行以下操作:

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

编辑:您从来没有说过来自textarea的任何内容,请在编码之前尝试对该值运行stripslashes

答案 2 :(得分:0)

php对我来说很好看。我敢打赌,有一些安全机制正在逃避你背后的危险角色。

你可以用python中的striplashes相当于你自己。

答案 3 :(得分:0)

听起来在PHP中启用了magic quotes

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

答案 4 :(得分:-1)

试试这个: -

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

希望它有所帮助。