-
-
Web应用开发人员最易犯的九个安全错误
-
发表于: 2015-5-20 20:36 1613
-
新闻链接:http://netsecurity.51cto.com/art/201503/467629.htm
新闻时间:2015-03-10
新闻正文:
开发者应当注意哪些基本的安全原则?应当避免哪些安全错误?为回答这些问题,下面的建议可以回答上述问题。
自以为是:开发自己的安全方法
有些开发者错误地认为自己的算法或认证方法更安全:毕竟黑客从未见识过这种方法,所以他们在破解时会更困难。果真如此吗?
答案是否定的。开发者自己开发认证或登录方法是一个错误,因为他会犯一个或一些黑客能够发现的错误。开发者应当依靠现有的经过完全测试的安全方法,原因在于它们已经被安全社团反复测试过了。因此,这些方法不太可能包含被开发者忽视的重大安全漏洞。有安全专家指出,任何人都可以发明一种他们自己无法破解的加密算法,但要开发一种别人无法破解的方法就困难多了。所以,开发者还是老老实实地用经认证或安全测试的方法吧。
粗心大意:直接使用用户提供的信息访问数据库
在开发应用程序特别是在开发Web应用程序时,许多开发者没有充分地验证从用户那儿接收到的输入数据。这种做法存在安全问题,因为它允许非法的数据进入客户的数据库,并且还有更大的安全隐患。不能对用户的输入进行验证(无论是来自Web还是来自API)会导致SQL注入、跨站脚本攻击、命令劫持、缓冲区溢出,以及被攻击者利用的其它Web应用程序漏洞。
这种错误在Web应用程序的开发中是最常见的。如果没有保护这些程序,用户就有可能利用输入字段将恶意脚本注入到应用程序或者访问数据库的私密数据。当然,多数用户不会有什么恶意企图,但开发者必须用防御的心态和方法来处理用户输入。
开发者不应当轻易相信用户输入,而要在客户端和服务器端进行双重验证。否则,就有可能产生严重的漏洞,如:跨站脚本攻击和SQL注入等。
忽视全局:关注组件而非整个系统
大型的开发项目往往是由多个开发者开发应用程序的不同部分,因而开发人员就容易关注个别组件。当然,如此开发的应用程序,其每个小部分可能很安全,但开发者是否考虑过整体的安全性?
许多安全问题并非产生于组件自身,而是在数据和过程从业务进程的一部分流动到另一部分时才会出问题。开发者一般都承担着一项业务进程的一部分,并且一般不理解业务过程的其它部分。这种认知缺乏会导致不安全的数据传递,从而将数据暴露给各种攻击和威胁,如中间人攻击、数据完整性问题、信息泄露等。
开发者对企业的业务服务有一个系统的观点是至关重要的,只有这样才能理解所有的组件如何协作,以及如何保证合并后的应用程序的安全。
新闻时间:2015-03-10
新闻正文:
开发者应当注意哪些基本的安全原则?应当避免哪些安全错误?为回答这些问题,下面的建议可以回答上述问题。
自以为是:开发自己的安全方法
有些开发者错误地认为自己的算法或认证方法更安全:毕竟黑客从未见识过这种方法,所以他们在破解时会更困难。果真如此吗?
答案是否定的。开发者自己开发认证或登录方法是一个错误,因为他会犯一个或一些黑客能够发现的错误。开发者应当依靠现有的经过完全测试的安全方法,原因在于它们已经被安全社团反复测试过了。因此,这些方法不太可能包含被开发者忽视的重大安全漏洞。有安全专家指出,任何人都可以发明一种他们自己无法破解的加密算法,但要开发一种别人无法破解的方法就困难多了。所以,开发者还是老老实实地用经认证或安全测试的方法吧。
粗心大意:直接使用用户提供的信息访问数据库
在开发应用程序特别是在开发Web应用程序时,许多开发者没有充分地验证从用户那儿接收到的输入数据。这种做法存在安全问题,因为它允许非法的数据进入客户的数据库,并且还有更大的安全隐患。不能对用户的输入进行验证(无论是来自Web还是来自API)会导致SQL注入、跨站脚本攻击、命令劫持、缓冲区溢出,以及被攻击者利用的其它Web应用程序漏洞。
这种错误在Web应用程序的开发中是最常见的。如果没有保护这些程序,用户就有可能利用输入字段将恶意脚本注入到应用程序或者访问数据库的私密数据。当然,多数用户不会有什么恶意企图,但开发者必须用防御的心态和方法来处理用户输入。
开发者不应当轻易相信用户输入,而要在客户端和服务器端进行双重验证。否则,就有可能产生严重的漏洞,如:跨站脚本攻击和SQL注入等。
忽视全局:关注组件而非整个系统
大型的开发项目往往是由多个开发者开发应用程序的不同部分,因而开发人员就容易关注个别组件。当然,如此开发的应用程序,其每个小部分可能很安全,但开发者是否考虑过整体的安全性?
许多安全问题并非产生于组件自身,而是在数据和过程从业务进程的一部分流动到另一部分时才会出问题。开发者一般都承担着一项业务进程的一部分,并且一般不理解业务过程的其它部分。这种认知缺乏会导致不安全的数据传递,从而将数据暴露给各种攻击和威胁,如中间人攻击、数据完整性问题、信息泄露等。
开发者对企业的业务服务有一个系统的观点是至关重要的,只有这样才能理解所有的组件如何协作,以及如何保证合并后的应用程序的安全。
赞赏
看原图
赞赏
雪币:
留言: