2010-09-13 60 views
2

我一直在编写本地运行的python脚本。我现在想通过使用这些python脚本和通过webhosting提供在线服务,我可以在cgi-bin中运行python。在cgi-bin中运行python的安全防范措施

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

我想知道的是我应该采取的安全防范措施。这里是我的担心:

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

“我在脚本中拥有数据库的用户/通行证。”猛击。你不应该这样做。期。现在停下来。 – 2010-09-13 19:53:43

+0

@ S.Lott你应该去问几乎所有关于将python连接到数据库的介绍性教程,以更改它们的示例。 – greye 2010-09-14 00:16:40

+1

教程不是生产就绪的代码。它会混淆这个例子以显示正确的数据库证书处理。您可能想要实际阅读**数据库**文档,以获得更好的方法来保留不会在CGI脚本中公开的凭据。 – 2010-09-14 00:58:53

回答

6

请查看owasp.org - 您现在正在编写一个Web应用程序,您需要担心所有Web应用程序需要担心的问题。这份名单太长而且很复杂,但是owasp是一个很好的起点。

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

感谢您输入的消毒链接,我正在查看它。这是一个共享的虚拟主机服务器,所以我没有完全访问它来更改PythonPath或Apache。在这种情况下,你认为我可以把它放在我帐户的其他目录中吗?我有一个文件夹的根,public_html文件夹,并在这一个cgi-bin。我应该把它放在根?脚本是否可以访问它,但外面的人不会?最后,你如何保证他们不能下载代码? cgi-bin只会返回执行结果还是可以从那里下载原始文件?谢谢。 – greye 2010-09-13 19:47:29

+0

@greye:请获得一份好的Apache教程并阅读它。 – 2010-09-13 19:56:22

2

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

使用mod_wsgi的,这样你的脚本没有脚本,但作为下WSGI应用功能运行。

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

使用像Django这样的框架。

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

使用像Django这样的框架。

我可以安装该文件旁边其他图书馆?

是的。

我还必须担心这些/中的安全吗?

是的。

难道我设置他们的权限,以700? 744?

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

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

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

另外,请使用一个框架。请不要自行改造一切。人们已经解决了所有这些问题。

+0

我很乐意使用框架,只专注于为应用程序的代码!但托管公司似乎没有django(他们在论坛中声称它是资源密集型的,因此它们不会将它用于共享服务器)。我想我支付博客托管服务,而不是网络空间来运行更复杂的事情。任何有关使用django进行托管的建议,或者我可以运行python分析脚本并通过Web界面呈现结果的建议?这是一个家庭和朋友的项目,所以我不期望巨大的流量,但我希望建立不同的多功能性。谢谢。 – greye 2010-09-13 20:52:04

+0

@greye:你为什么不从这里开始? Google是否被破解? http://www.google.com/search?client=safari&rls=en&q=django+hosting&ie=UTF-8&oe=UTF-8。最高回应似乎是http://djangohosting.org/。 – 2010-09-13 21:00:59

+0

我曾期待过似乎有经验的人的建议。我可以在自己的谷歌上,tyvm。 – greye 2010-09-14 00:12:24