1
4
只要服务器禁止从Web访问所有.svn目录,就没有。 |
2
4
我不一定要对涉及的安全风险发表评论,但它可能会使您陷入一种未经审查/未完全测试的代码最终进入生产环境的境地。如果您考虑使用SVN作为将源代码分发到不同环境(开发、测试、生产等)的方法,我建议您采用以下方法: 有一部分树保持稳定(很可能是树枝),并使之成为某个人的责任,作为门守卫的分支。所有对“稳定”的承诺都必须通过它们,它们将负责确保没有验证什么都不会进入。如果没有人愿意这么做很长时间,这个职位可以每周或每月轮换一次。 此外,如果您只想定期从Subversion到Production执行临时转储,那么可以使用“svn export”命令。 最后,我猜这是Web开发,如果您只需要签出来设置生产环境的话。如果是这种情况,请确保运行Web服务器的用户对存储Subversion元数据的“.svn”目录没有读取权限。 |
3
1
我根本不认为这是一种安全风险或坏做法。它非常方便,当然,我可能会在未来的项目中做一些事情。 例如,Capistrano(一个Rails自动部署解决方案)是围绕将代码从SVN签出到生产服务器而构建的。 有些愚蠢的事情你可以做,这可能使它成为一个坏的做法,但他们都很容易缓解。例如:
|
4
1
已经有了一些很好的答案。但让我试着以某种方式量化风险。 假设 2个月前 ,特洛伊木马的风险很小,可以接受。沿着来 Kaminsky's DNS 攻击和preto特洛伊木马的风险刚刚从理论上的主动攻击上升到“脚本孩子”领域的某个东西。这是因为大多数公共Subversion项目要么使用HTTP,要么使用HTTPS,它们不使用具有完整证书链的证书。然后,对手所需要做的就是毒害DNS并用自己的特洛伊木马克隆SVN服务器。 |
5
0
好吧,如果您要签出的代码是基线化的(稳定的),我认为这不是什么问题。 但您当然应该标记代码,以便稍后知道您在那里放置了什么。 |
6
0
可能比从测试服务器复制更安全,至少您确信您得到了所有文件的正确版本,并且复制了所有文件。 |
7
0
如果我们谈论的是应用程序稳定性(或代码),那么在部署期间总是存在风险。 但除此之外,如果您可以使用HTTPS而不是HTTP,那么安全风险是什么?或者甚至使用ssh网关。 |
8
0
我会这样做: 假设:
步骤
1确保“新”生产版本有标签
推理这是为了使实际的实现和回退步骤尽可能基本。你 能够 只需使用svn开关,但任何后退的问题都可能导致系统损坏。 显然,这是最简单的可能情况——没有数据迁移,没有未版本化的配置文件,等等;但是我认为关键在于构建一个复制树,然后交换,给您一个干净、清晰的切换和回退。 |
9
0
我不一定喜欢将存储库直接签出到部署中的想法。具体来说,是否需要将每个文件(如测试用例)部署到生产环境中?另外,在将来的某个时候,您是否会有任何生成的代码?最好有一个构建系统来构建要部署的分发。 但是,为了代替任何这些决定,请确保记下要同步的存储库的修订版。通过这种方式,同步是可复制的,如果在生产中出现无法复制的错误,您可以将本地存储库同步回与生产一致的状态。 |
10
0
我发现使用SVN非常方便和可靠。我们的策略是保持主干的稳定,并对分支进行非关键性的更改,这些更改稍后在发布日期前不久合并到主干中。 它使发布变得像对较小/不太复杂的项目执行“SVN UP”一样简单。简化部署使非开发人员(sysadmin、随叫随到的支持等)更容易在相关开发人员不可用时快速恢复有问题的更改。如果新版本出现问题,只需回滚到最后一个已知的稳定版本。 我唯一真正关心的是SVN元数据的可见性。确保已将Web服务器设置为拒绝访问.svn目录(以及其中包含的所有文件)。您可以使用SVN导出,或者删除SVN元数据作为发布过程的一部分:查找。-名称.svn-print0 xargs-0 rm-rf 你不想要的是有人浏览www.example.com/.svn/entries,它会显示你的源代码库、用户名和文件。如果你做了一些愚蠢的事情,比如“passwords.conf”,这对用户来说是很糟糕的(取决于服务器配置),当然,这并不是SVN的错。正如其他答案中提到的,您也不想使用HTTP。 简而言之,只要元数据和SVN存储库是安全的,那么我看不到任何缺点,只有好处。 |
Eric · pip安装-e svn+ssh不接受用户 6 年前 |
Anu699 · 在git中管理多个项目的最佳方式是什么?[已关闭] 6 年前 |
Dipu H · Viewvc未扩展关键字 6 年前 |
NealWalters · SVNLook-存储库格式-语法不正确 6 年前 |
m-mas · 尝试与svn重新同步trac时出错 6 年前 |
Wombattle · 通过命令行在SVN中保留时间戳 6 年前 |