【问题标题】:Best way to provide a secure external webpage for importing to an internal database and Django. (Best way for the tiers to comunicate).为导入到内部数据库和 Django 提供安全的外部网页的最佳方式。 (层级沟通的最佳方式)。
【发布时间】:2013-01-22 13:11:36
【问题描述】:

我的工作中有一个 Django 应用程序,只能在内部网络上使用。

目前我们使用 Excel 导入数据,但这是一个非常容易出错的过程,我想替换它。

我想用 Javascript 提供一个丰富的 Web 应用程序,它公开了来自主 Django 应用程序的一些但不是全部的数据(菜单的查找值)。这将在对外界可见的服务器上运行。

那么有什么好的方法呢?

管理层担心将主 Django 应用程序提供给外部世界的安全性,我也更喜欢中间层 - 我认为编写一个小型服务器端应用程序比通过当前代码更容易并确保它对外界足够安全(我学习了 Django 构建这个应用程序,所以一些旧代码没有按照最佳实践完成,但确实可以按需要工作)。我还希望它保留新数据,直到有人在导入主数据库之前检查它看起来不错。 (我是唯一的开发者,所以有时间考虑)。

所以我现在能想到两个选项。

1:在面向外部的服务器上有一个小型 Django 应用程序。这可以与主应用程序通信以获取查找所需的值,并在导入之前存储输入。这些表将基本上反映主应用程序,并在主应用程序表更改时需要更新。

2:有类似的东西,但不是使用数据库,而是使用面向外部的服务器来联系内部服务器上的 REST 接口。类似于使用 Django 非关系从主应用程序的 REST 接口获取数据。在主数据库服务器中放置一个导入表以存储数据以供审批。

这些方法是好还是坏? 还有其他建议吗? 有什么好的资源可以用来学习 n 层应用吗?

【问题讨论】:

    标签: django architecture n-tier-architecture non-relational-database


    【解决方案1】:

    如果我对您的理解正确,您希望一小群受信任的用户能够访问内部数据库。已经有一个内部 Django 应用程序正在访问该数据库。

    管理层担心将此应用程序或其扩展程序提供给普通互联网。

    我认为他们的担忧是非常有道理的。如果您只有有限的一组用户访问导入功能,请将身份验证从 Django Web 应用程序推送到 HTTP 服务器/平衡器/前端。

    例如,设置一个 apache 外部网络服务器,强制对您的 Django 应用程序的所有访问进行加密 (HTTPS) 和身份验证。可以使用服务器上的静态文件通过 HTTP-Auth 对用户进行身份验证。密码更改/用户添加必须由登录服务器的管理员完成。

    只有在完成此登录后,才能访问具有自己身份验证的 Django 应用程序。我会选择一个单独的导入应用程序,而不是扩展主应用程序。这个小应用程序可以在主数据库的权限减少的情况下运行,以实现纵深防御。

    此设置为您提供了一些额外的接口/故障点,同时针对随机 Internet 用户保持较小的攻击面。您可以聘请安全顾问来审核您的 apache 配置,并确保您锁定了更大的 Internet,而只需要担心经过 HTTP 身份验证的用户。

    到目前为止,我已经运行此类设置 15 年了。用户对网吧中的双重身份验证和密码保存感到恼火是 HTTP-Auth 的一个问题,但通常一旦设置它就非常无缝。

    【讨论】:

    • 我在几年前解决了这个问题,通过在公共网络上创建一个单独的 Django 应用程序,从内部网络上的主应用程序同步/提取数据。
    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 2023-03-24
    • 2010-11-20
    • 1970-01-01
    • 2011-09-20
    • 2011-05-25
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多