我想知道Python中的"requests“库使用的安全协议。具体地说,我想了解该库是否实现了某些安全措施,如字符串转义,以确保网站内容的安全提取。
例如,假设我向某个在后端执行有问题的js脚本的站点发出请求。如果我运行下面的代码,会发生什么?
r = requests.get('https://somesite.com')
发布于 2019-03-30 22:39:04
请求将只返回一个字符串(以及响应码等),其中包含服务器所回复的内容。顾名思义,请求库向服务器发送一个HTTP请求,然后服务器发送一个响应。
它对响应文本所做的唯一处理是处理编码-即处理unicode处理。如果你愿意,你甚至可以把它关掉。手册here中对此进行了说明。
例如,此代码将把HTML源代码打印到站点example.org:
r = requests.get('https://example.org/')
print(r.text);
如果服务器执行可疑的javascript,任何人对此都无能为力,因为服务器在收到请求时会做任何它想做的事情。理想情况下,服务器应该被编程为不执行此操作,但这实际上不是客户端的问题。
如果服务器返回可疑的javascript,那么该javascript将不会被转义。Python不会仅仅因为javascript在字符串中就执行它,但是如果您是根据请求的响应生成HTML,那么您需要确保生成的HTML中没有可疑的javascript。
因此,除非您信任生成响应的服务器,否则应将从请求收到的响应视为不受信任的输入。你不需要担心请求执行来自服务器本身的代码,但是如果服务器向你提供恶意数据,而你将输入传递给某个将执行它的东西,比如web浏览器,如果它是javascript,那么你可能会有麻烦。
https://stackoverflow.com/questions/55432322
复制相似问题