我想知道Python中“请求”库使用的安全协议。具体来说,我想了解图书馆是否实施某些安全措施,例如字符串转义,以确保安全提取网站内容。
例如,假设我要向某个在后端执行可疑js脚本的站点发出请求。如果我运行以下代码会发生什么?
Album
答案 0 :(得分:0)
请求将仅返回服务器响应的字符串(以及响应代码等)。顾名思义,请求库将HTTP请求发送到服务器,然后服务器发送响应。
它对响应文本所做的唯一处理是处理编码-即,以处理unicode处理。如果需要,您甚至可以关闭此功能。手册here中对此进行了说明。
例如,此代码只会将HTML源代码打印到网站example.org:
r = requests.get('https://example.org/')
print(r.text);
如果服务器执行可疑的javascript,则任何人都无能为力,因为服务器在收到请求时会执行其想做的任何事情。理想情况下,应该对服务器进行编程,使其不执行此操作,但这实际上不是客户端的问题。
如果服务器返回可疑的javascript,则该javascript将不会被转义。 Python不会仅仅因为它在字符串中而执行javascript,但是如果您基于请求的响应来生成HTML,则取决于您确保所生成的HTML中没有可疑的javascript。
因此,除非您信任生成请求的服务器,否则将从请求接收到的响应视为不受信任的输入。您无需担心会从服务器本身执行代码的请求,但是如果服务器向您提供了恶意数据,并且您将该输入传递给了将执行该命令的内容,例如网络浏览器, javascript,那么您可能会遇到麻烦。