当前位置: 代码迷 >> .NET Framework >> 主管说小弟我这样写是为程式开"后门"想意见
  详细解决方案

主管说小弟我这样写是为程式开"后门"想意见

热度:36   发布时间:2016-05-01 23:36:33.0
主管说我这样写是为程式开"后门",想请教大家意见?
程式大约是这样的:
1. ASPX
Protected Sub Page_PreLoad(sender As Object, e As EventArgs) Handles Me.PreLoad
    If SystemManager.HostName(New String() {"P102O017"}) Then
        UserInfo.MakeSession(New String() {"123456", "路人甲", "133"})
        ''''''''' 123456是員工編號,接下來是姓名,最後是單位編號 ''''''''
        Return
    End If
End Sub

2. App_Code
SystemManager是我自己写的类
Public Class SystemManager
    Public Shared Function HostName(hosts As String()) As Boolean
     Dim host As String = System.Net.Dns.GetHostName()
     For Each h As String In hosts
     If h = host Then
     Return True
     End If
     Next
     Return False
    End Function
End Class
    
有争议的就是那段ASPX的IF,主管认为我在开后门,但是P102O017是我自己电脑的主机名称,
一旦将程式码移到真正的正式伺服器执行时,这段IF就不会被执行(因为正式主机的电脑名称不是这个名字)
所以我认为一旦放到正式伺服器就不是后门了(一般人无法更改伺服器名称),请问我这样的主张对吗?
------解决方案--------------------
这当然算后门。
------解决方案--------------------
那你怎么知道不能伪造计算机名呢?
------解决方案--------------------
这个是内部后门,会被有心人利用,还是撤了吧
------解决方案--------------------
引用:
请问要如何伪造伺服端主机端的名称,除非伺服端被骇不是吗?
不是很理解被认定为后门的原因

我的程式认的是伺服器的名称而不是客户端的名称,所以IF是不会成立的


你可以使用“条件编译”方式使得只有在DEBUG时才能执行(才有)这些代码,而RELEASE时并没有这些代码。这就可以避免在发布时带上所谓“后门”。

有个别方便调试/测试的代码,这在开发中会存在的,每个人都可以写4、5处这种代码。只不过不要滥用即可。

软件开发不是扯什么“洁癖”,而是要用很务实的测试驱动概念。如果你们的团队有一个测试用例,它专门用来测试“如果没有登录则应该阻止用户”,结果运行时发现了BUG(因为你的程序没有让未登录的程序抛出异常,所以出错了),那么这时候你就会去解决这个问题,你就会去权衡“是保留这个后门,还是顾全大局为了测试用例而把后门修改一下成为别的后门”。

程序设计是自由的,谁去说什么“能不能写什么代码”这完全取决于你们的团队当前所设计的测试用例集达到了什么程度。单纯用一个“指责别人”来改变代码编写风格,这是非常有害的。
------解决方案--------------------
如果你这个只是自己本地测试代码
你完全可以通过
#if DEBUG
#endif
来包含,当然你的语言是VB.net....我写的是C#的,但相信VB.NET里应该也是有类似的东西的
  相关解决方案