Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在cgi-bin中运行python的安全注意事项_Python_Security_Cgi Bin - Fatal编程技术网

在cgi-bin中运行python的安全注意事项

在cgi-bin中运行python的安全注意事项,python,security,cgi-bin,Python,Security,Cgi Bin,我一直在编写本地运行的python脚本。我现在想使用这些python脚本中的一个提供在线服务,通过我拥有的webhosting,我可以在cgi容器中运行python python脚本从用户填写的html表单中获取输入,具有凭据并与本地数据库连接,使用python库计算内容,并将结果作为html发送以显示 我想知道的是我应该采取什么安全预防措施。以下是我的担忧: 通过web调用的脚本的正确文件权限是什么?755 我正在接受用户输入。我如何保证它经过消毒 我在脚本中有数据库的user/pass。如

我一直在编写本地运行的python脚本。我现在想使用这些python脚本中的一个提供在线服务,通过我拥有的webhosting,我可以在cgi容器中运行python

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

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

  • 通过web调用的脚本的正确文件权限是什么?755
  • 我正在接受用户输入。我如何保证它经过消毒

  • 我在脚本中有数据库的user/pass。如何防止脚本被下载和代码被看到
  • 我可以在文件旁边安装其他库吗?我也需要担心这些设备的安全性吗?我是否将他们的权限设置为700?744
  • 还有其他我不知道的漏洞吗

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

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

使用mod_wsgi,这样脚本就不会作为脚本运行,而是作为wsgi应用程序下的函数运行

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

使用类似Django的框架


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

使用类似Django的框架

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

我也需要担心这些设备的安全性吗

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

它们必须可读。这就是全部。然而,如果您使用mod_wsgi,生活会更简单。如果使用框架,则更简单

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

吨。请看网站


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

感谢您提供的“净化输入”链接,我正在查看它。这是一个共享的webhosting服务器,所以我没有完全访问它来更改PythonPath或Apache。在这种情况下,你认为我可以把它放在我帐户的其他目录中吗?我有一个文件夹根,public_html文件夹,在这个cgi文件箱中。我应该把它放在根部吗?脚本是否有权访问它,但外界不会访问?最后,您如何保证他们不能下载代码?CGIBIN是否只返回执行结果,或者您是否可以从那里下载原始文件?谢谢。“我在脚本中有数据库的用户/通行证。”崩溃。你不应该这样做。时期现在停下来。@S.Lott您应该四处看看,询问几乎所有关于将python连接到DB的入门教程,以更改它们的示例。这些教程不是可用于生产的代码。这将使示例变得混乱,以显示数据库凭据的正确处理。您可能想实际阅读数据库文档,以获得更好的方法来保留不在CGI脚本中公开的凭据。我希望使用一个框架,只关注为应用程序编写代码!!但托管公司似乎没有django(他们在论坛上声称它是资源密集型的,所以他们不会将其用于共享服务器)。我想我是在为博客托管服务付费,而不是为运行更复杂的东西的网络空间付费。关于使用django托管或者在哪里可以运行python分析脚本并通过web界面显示结果,有什么建议吗?这是一个家庭和朋友的项目,所以我不希望有巨大的流量,但我希望建设不同的东西的多功能性。谢谢。@greye:你为什么不从这里开始?谷歌坏了吗。最重要的回应似乎是。我期待着有经验的人的建议。我可以自己用谷歌搜索,tyvm。@greye:你想要什么“建议”?代码示例?这就是框架文档的用途。如果你想要一些具体的东西,请更新问题以确定你想要的具体东西。现在还不清楚你还需要什么样的信息。每当我看到“请使用一个框架”作为实际学习良好实践的替代方案时,我都会感到畏缩。通过使用框架,除了一些有用的设计模式之外,您不会学到任何基础知识。在使用框架之前,他们绝对应该了解框架是如何工作的,为什么它们有用,以及它们为我们做了什么。