python - codeigniter 作为 web 和 python 作为 web 服务

标签 python web-services codeigniter python-2.7

是否可以将python作为Web服务器并且前端是codeigniter?

由于某些原因:

  • 数据库安全 - 就像您保存数据时一样。 codeigniter 会将数据传递给 python basehttpserver/或者 flask (但我之前还没有完成 flask )
  • SQL 注入(inject)。

  • 就像例如。前端代码点火器
  • 表单 - 发送数据。

  • 后端 python 网络服务
  • 接收数据 - 将用作 API。而python将负责在MySQLdb中保存数据。
  • 最佳答案

    从理论上讲,我不明白为什么这是不可能的。

    您可以使用 codeigniter 轻松编写 Web 应用程序,并让 Controller 将数据传递给基于 python 的 Web 服务。如果您对完全解耦的前端/后端感兴趣,您还可以在 CI 程序中的数据输入设施和 Python 中的持久性 Web 服务之间使用队列层(例如 RabbitMQ)。

    也就是说,我不清楚你为什么要这样做。 CodeIgniter 是 PHP,包括一些非常优秀的数据建模组件,它们完全集成到整个框架中。长话短说,如果您使用 CodeIgniter,只需将其连接到 MySQL 并为您进行数据持久化。

    同样,如果您更喜欢用 Python 编写持久性代码,为什么不直接使用 Django ?它是一个完全实现的 Python Web 框架,还具有出色的 ORM 和对 MySQL 的支持。

    我真的不明白这两种技术如何为您带来明显的好处,只要它们都被正确使用,以确保数据库安全。两者都有用于“清理”用户提供的数据以防止 SQL 注入(inject)的内置方法(notes for Djangonotes for CodeIgniter)

    StackOverflow 上还有很多其他帖子涉及使用 CodeIgniter 和其他框架防止 SQL 注入(inject)。仅仅使用 python,或者将你的前端和后端解耦,不会为你提供任何额外的安全或保护保证。做到这一点的唯一方法是仔细构建您与数据库的交互,使用您正在使用的任何框架提供的所有工具,或者在没有可用的情况下创建它们的等价物(或切换到更好的工具集)。

    编辑-扩展

    基于上面的评论,我认为实际上值得多写一些关于解耦基础设施的潜在优势和真正挑战的文章。

    原则上,很容易将前端与更孤立的后端分离。您可以在 Django 或可能的 CodeIgniter 中利用现有的模型基础设施(虽然我个人没有在 CI 中看到它,只是在 Django 中),但仅在前端处理内存中的模型对象,并扩展现有的 ORM 功能使用您的后端服务从持久层(您的数据库)实际存储和检索数据。

    实际上,这可能需要做很多正确的工作。为了获得您想要的安全优势,您的解耦后端需要处理前端,就好像原则上它是“敌对的”,或者至少是不可信的。因此,请确保您为前端实现了一种方法,以可靠地向后端验证自身身份。确保所有流量在前端和后端之间最少使用 SSL。仔细考虑您的服务架构(后端逻辑前面的 SOA 层),并确保您的 API 在可能的情况下是 MECE(互斥,共同穷举)。

    我确信我遗漏了一些基本原则,但最近参与了这些系统的设计和构建,我可以向你保证,复杂性会很快爆发,因此需要谨慎的架构纪律和遵守 MECE 和 MVP (最小可行产品)至关重要。如果一个解耦的基础设施能够满足需求,它可以成为一个了不起的最终产品,而且在我使用过的用例中,它非常有效。不过,这并不是万能的,希望这里的一些额外描述可以帮助您做出更明智的选择。

    希望这有助于完善主题答案。基本原则:根据需要进行设计。不要将复杂与安全混为一谈。简单可以是安全的,复杂也可以,但复杂性为难以修复的安全漏洞提供了空间,而简单看起来很容易给人一种安全的错觉。没有任何方法可以保证积极的结果,所以不要试图偷工减料;尽可能多地花时间在研究和设计上,以尽量减少构建、重构和修复的时间。

    关于python - codeigniter 作为 web 和 python 作为 web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059338/

    相关文章:

    python - 列出 python 中 lambda 函数的参数

    .net - 如何以编程方式为 BasicHttpBinding 指定 HTTPS?

    php - Codeigniter - 无法点击类中的方法

    php - php短标签的混合

    Codeigniter:显示RAW查询结果

    python - python 装饰器如何处理这段代码?

    python - 从 Pandas 文件名中提取文件扩展名

    java - 使用 jdk 8 的默认 jaxws-ri 实现禁用 SOAP 客户端的 SOAP 验证

    Java网络服务

    python - 在 Pandas 中计算滚动回归并存储斜率