2

我一直在编写在本地运行的 python 脚本。我现在想使用这些 python 脚本之一在线提供服务,并且通过我拥有的虚拟主机,我可以在 cgi-bin 中运行 python。

python 脚本从用户填写的 html 表单中获取输入,拥有凭据并连接到本地数据库,使用 python 库计算内容并将结果作为 HTML 发送以显示。

我想知道的是我应该采取哪些安全预防措施。以下是我的担忧:

  • 通过 Web 调用的脚本的正确文件权限是什么?755?
  • 我正在接受用户输入。我如何保证它已消毒?
  • 我在脚本中有数据库的用户/密码。如何防止脚本被下载和代码被看到?
  • 我可以在文件旁边安装其他库吗?我是否也需要担心这些的安全性?我是否将他们的权限设置为 700?744?
  • 还有其他我不知道的漏洞吗?
4

3 回答 3

5

查看 owasp.org - 您现在正在编写一个 Web 应用程序,您需要担心 Web 应用程序需要担心的所有事情。该列表太长且太复杂,无法在此处放置,但 owasp 是一个很好的起点。

于 2010-09-13T19:32:17.883 回答
2
  • 文件权限 - 755 是合理的。
  • 清理您的用户输入。这就是你保证它被消毒的方式。看到这个问题。
  • 不要让人们下载脚本的代码。您还可以将用户名/密码放在无法通过 Web 访问的某个目录中(例如在可服务目录之外)。
  • 安装其他库的最佳位置是在您的 PYTHONPATH 中,但在 Apache 用于提供服务的路径之外。
  • 漏洞比比皆是。注意显示用户键入的内容,因为这会导致 XSS 问题。
于 2010-09-13T19:34:01.203 回答
2

通过 Web 调用的脚本的正确文件权限是什么?755?

使用 mod_wsgi 以便您的脚本不作为脚本运行,而是作为 WSGI 应用程序下的函数运行。

我正在接受用户输入。我如何保证它已消毒?

使用 Django 之类的框架。

我在脚本中有数据库的用户/密码。如何防止脚本被下载和代码被看到?

使用 Django 之类的框架。

我可以在文件旁边安装其他库吗?

是的。

我是否也需要担心这些的安全性?

是的。

我是否将他们的权限设置为 700?744?

它们必须是可读的。就这样。但是,如果您使用 mod_wsgi,生活会更简单。如果您使用框架,则更简单。

还有其他我不知道的漏洞吗?

吨。请参阅http://www.owasp.org网站。

另外,请使用框架。请不要自己重新发明一切。人们已经解决了所有这些问题。

于 2010-09-13T19:47:53.423 回答