我想知道Python中“请求”库使用的安全协议。具体来说,我想了解图书馆是否实施了某些安全措施,例如字符串转义,以确保安全提取网站内容。

例如,假设我要向某个在后端执行可疑js脚本的站点发出请求。如果我运行以下代码会怎样?

r = requests.get('https://somesite.com')

最佳答案

请求将只返回服务器响应的字符串(以及响应代码等)。顾名思义,请求库将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),那么您可能在麻烦。

关于python - python请求的安全协议(protocol),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55432322/

10-11 22:39
查看更多