在cgi-bin中运行python的安全预防措施

时间:2010-09-13 19:17:18

标签: python security cgi-bin

我一直在编写本地运行的python脚本。我现在想使用其中一个python脚本在线提供服务,通过webhosting我可以在cgi-bin中运行python。

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

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

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

3 个答案:

答案 0 :(得分:6)

查看owasp.org - 您现在正在编写一个Web应用程序,您需要担心Web应用程序需要担心的一切。这个列表太长而且很复杂,但是owasp是一个很好的起点。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

  

通过网络调用的脚本有哪些正确的文件权限? 755?

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

  

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

使用像Django这样的框架。

  

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

使用像Django这样的框架。

  

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

  

我是否还要担心这些/的安全性?

  

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

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

  

我不知道的任何其他漏洞?

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

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