3

正在查看开发人员的代码。他做了一些我以前在 Python 应用程序中从未见过的事情。他的背景是 PHP 并且刚刚学习 python,所以我不知道这是否可能是他习惯使用的不同系统架构的遗留问题。

他告诉我,这段代码的目的是防止用户通过代码插入攻击应用程序。我很确定这对我们的用例来说是不必要的,因为我们从不将数据评估为代码,但我只是想确保并询问社区。

# Import library
from cgi import escape

# Get information that the client submitted
fname   = GET_request.get('fname',   [''] )[0]

# Make sure client did not submit malicious code <- IS THIS NECESSARY?
if fname:
    fname = escape(fname)
  • 这在 Python 应用程序中通常是必需的吗?
  • 在什么情况下需要?
  • 什么情况下不需要?
4

1 回答 1

7

如果用户输入进入数据库或其他任何可能被执行的地方,那么代码注入可能是个问题。

这个问题询问如何防止 php 中的代码注入,但原理是相同的——执行包含恶意代码的 SQL 查询,可能会执行诸如删除所有数据之类的操作。

转义函数将<、> 和 & 字符转换为 html 安全序列。

从这两个链接来看,escape() 本身似乎还不够,但确实需要做一些事情来阻止恶意代码。当然,这很可能会在您的代码中的其他地方得到处理。

于 2012-12-05T17:33:09.780 回答