这些问题是从设计阶段就开始防范的,不是等你做好了整个东西再来修补的,做好了就很难补全。防注入就用ADO.NET,并且使用Parameters来传入变量,减少拼接SQL的机会。如果一定要拼接SQL,就自己写一个class或者struct来专项负责拼接工作,该struct在拼接时每一步操作的颗粒都尽可能小,小到能够确保每一步都不可能引入注入漏洞。至于Cross Site Script Attack,这个复杂一些,首先管好你自己站点的Script,不要存在漏洞,涉及安全性的东西不要给Script做一律安排在服务器端做。如果你的网站允许别人发表东西,就应该确保用户无法发表任何Script。最后,IIS和MSSQL这些都是漏洞多多的东西,除了及时打上所有补丁之外也没什么能干的了。
To viena(维也纳nn): 可能我问的不是很准确,不过我想这样说大家看的懂.其实就是关于asp.net网站的安全问题了.To xiangxiangwo(懒羊羊): 能不能谈谈你关于IIS的经验呢? 我前面说到的那两种应该是没什么问题的,基本上大家查一下也就知道该怎么做了.我的问题是还有没有别的?不论是代码方面还是配置或者部署方面,难道我们除了打补丁没什么可做的了?有没有知道其它的一些攻击方法呢?
.NET体系中的源程序安全问题:在.NET平台上,代码以中间语言的形式运行,它是.NET众多优势的基础。但在独立桌面应用中,它给源代码的安全带来了威胁。本文探讨产生这个问题的原因,分析可能的解决办法。 在Visual Studio.NET(VS.NET)体系中,VB、Visual C 以及C#之类的编译器把源程序编译成MSIL。MSIL即Microsoft Intermediate Language,或Microsoft中间语言,它在执行之前被即时(Just-In-Time Compile,JIT)编译成为机器语言。但是,你可能还没有深入了解当你在VS中点击Build按钮时发生了什么事情,或者你私有的源代码和信息是否在偷窥的眼光面前安然无恙、当你把IL代码发布给客户时是否能够保证代码不被篡改。下面我们将深入.NET的内部工作过程,探讨VB.NET体系MSIL的特点和一些你必须关心的问题。 你必须搞清楚以下几个问题。首先,.NET是为客户机/服务器系统以及Web应用而设计的。软件开发正在逐渐向Internet以及基于客户机/服务器的应用发展,许多应用不再有传统风格的界面,而是提供类似浏览器的界面。.NET也同样追随着这个趋势。 第二,在桌面应用中,我们无法保护以受管理的MSIL形式存在的代码,如果你觉得保护知识产权(即源代码)非常重要,那么.NET不适合桌面应用开发。虽然MSIL的承诺令人心动,虽然.NET平台和CLR(Common Language Runtime)很稳定,但从安全的角度来看,对于一个独立的桌面应用来说,这一切缺乏实际意义。在.NET中,作为一个VB程序员甚至是C#程序员,你只能编写受管理、不受保护的代码。 由于存在这种限制,如果你要在桌面应用中保护代码,你必须使用非受管理的C 。保护知识产权唯一真正有效的方法是:用非受管理的C 组件封装代码,然后从.NET受管理代码中通过COM协作接口调用它。 另外你还必须清楚的是,由于Active Server Pages.NET(ASP.NET)完全在服务器端运行,因此ASP.NET应用是安全的。实际上,这正是.NET最理想的境界——在受保护的服务器上运行代码,让代码远离任何想要研究它的人。ASP.NET把Web开发简化到了难以置信的程度,而Visual Basic.NET正是编写ASP.NET应用的优秀工具。
To sp1234(3+1=无穷大): 安全问题肯定是最基本的问题,可是现在规模不大的系统确实没什么人关心这些,就我的观察,现在的程序员大部分开发的时候根本就没有这方面的意识.不管我们的水平不到家,还是成本考虑,这些都是事实.大的系统去实施一些安全措施更常见吧. 而且我现在关心的是ASP.NET本身,难道在考虑架构或写代码时除了我上面提到的两点,就没什么别的可做了? 另外你能不能谈一下密码保存的问题,不放在数据库里那放在哪呢.我觉得加密放在数据库还可以.这个会有什么问题吗To zl9732(zl9732): 原因现在还没查明? To angleoldhen(): 我觉得注入不应该占这么大的比重.我看过一些论坛,讨论注入的并不多.感觉上除了注入和跨站外还应该会有很多和代码有关的安全问题. To lys1978900(天下無雙): 现在的人找漏洞不会是去用你的东西,然后突然发现了什么.除非别人是盯上你了.一般都是用工具去扫描一个网段.而且我这里说的,是通过ASP.NET来进入的. To dutguoyi(新鲜鱼排): 能不能介绍下SSL对性能的影响到底到了什么程度.
sql注入攻击是大多数程序员需要考虑的,不过已经有了很多防范的方法,所以也没有什么必要说了,至于后者,现在确实是安全性方面容易忽略的一个地方,而且也没有什么特别好的办法,
看看楼下的都是采用什么办法...
可能我问的不是很准确,不过我想这样说大家看的懂.其实就是关于asp.net网站的安全问题了.To xiangxiangwo(懒羊羊):
能不能谈谈你关于IIS的经验呢?
我前面说到的那两种应该是没什么问题的,基本上大家查一下也就知道该怎么做了.我的问题是还有没有别的?不论是代码方面还是配置或者部署方面,难道我们除了打补丁没什么可做的了?有没有知道其它的一些攻击方法呢?
客戶端的驗證可以用,但是最好在服務器端再次驗證一次,確保安全。
看看这个
1.我所知道的就是ie地址栏要过滤防止"%",目前用的是:try....catch。2.还有就是输入时把“<",">","'"过滤掉。3.所有发生的错误重定向到指定页面。4.注册上就用session来做,保存20分钟。cookies可以在客户端改的。其它的就不知道了
功能多了,用的人多了,才会有人注意某些细节,例如动网.
1.最危险的就是用户的输入,就会出现注入式的攻击。当然需要严格控制。
2.就是需要保证数据在传输过程中安全,这就需要使用SSL来保证,当然性能会有下降,有必要的话还是要使用的。
3.服务器的安全,可能就是不能烧到,不能被水淋到,不能被怪物吃掉,呵呵,还要注意用户的角色权限。
安全问题肯定是最基本的问题,可是现在规模不大的系统确实没什么人关心这些,就我的观察,现在的程序员大部分开发的时候根本就没有这方面的意识.不管我们的水平不到家,还是成本考虑,这些都是事实.大的系统去实施一些安全措施更常见吧.
而且我现在关心的是ASP.NET本身,难道在考虑架构或写代码时除了我上面提到的两点,就没什么别的可做了?
另外你能不能谈一下密码保存的问题,不放在数据库里那放在哪呢.我觉得加密放在数据库还可以.这个会有什么问题吗To zl9732(zl9732):
原因现在还没查明?
To angleoldhen():
我觉得注入不应该占这么大的比重.我看过一些论坛,讨论注入的并不多.感觉上除了注入和跨站外还应该会有很多和代码有关的安全问题.
To lys1978900(天下無雙):
现在的人找漏洞不会是去用你的东西,然后突然发现了什么.除非别人是盯上你了.一般都是用工具去扫描一个网段.而且我这里说的,是通过ASP.NET来进入的.
To dutguoyi(新鲜鱼排):
能不能介绍下SSL对性能的影响到底到了什么程度.