kay*_*kay 6 python serialization json escaping python-2.7
由于正斜杠只能出现在JSON序列化对象内的字符串中,因此不会使用转义(在默认设置中)
json.dump(some_dict).replace('/', r'\/')
Run Code Online (Sandbox Code Playgroud)
可靠的工作,但它看起来很hacky.
我知道正向斜线不必逃脱,但你可以逃脱它们,对于我的用例,我想让它们逃脱.
有没有办法让JSONEncoder在不手动转义它们的情况下转义正斜杠?
仅在encode_html_chars = True时转义正斜杠
看看这个 - https://github.com/esnme/ultrajson/pull/114
JSON规范说正斜杠应该隐式转义.
这是在JSONEncoder本身中执行此操作的解决方案.它只是你创建一个ESCAPE DICTIONARY并事先进行计算并稍后进行编码.
希望能帮助到你.
-
添加到上述解决方案,还有另一个逃避角色的原因.正如凯说,它给了我们一些额外的睡眠.它可以防止攻击.因此,上述解决方案可以解决所有问题.
ESCAPE_DCT = {
# escape all forward slashes to prevent </script> attack
'/': '\\/',
'\\': '\\\\',
'"': '\\"',
'\b': '\\b',
'\f': '\\f',
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
}
Run Code Online (Sandbox Code Playgroud)
escape_forward_slashes按照 ujson 文档使用,
escape_forward_slashes 控制是否转义正斜杠 (/)。默认为 True:
>>> ujson.dumps("http://esn.me")
'"http:\/\/esn.me"'
>>> ujson.dumps("http://esn.me", escape_forward_slashes=False)
'"http://esn.me"'
Run Code Online (Sandbox Code Playgroud)
看这里。
| 归档时间: |
|
| 查看次数: |
8428 次 |
| 最近记录: |