云中数据安全_认为您的应用程序在云中安全吗?

云中数据安全

云是不安全的。 开发人员通过经验知道,由于错误的代码以及与远程服务器和数据中心的不安全Internet连接,软件和服务器遭到了黑客攻击。 您可以将使用云计算与将贵重物品锁在停车场的手提箱中进行比较。 本质上,两者都容易受到攻击。 在本文中,我们解释了云为何不安全的原因,但我们还通过说明通过创建BugHeist来说明一些Django示例,来研究减轻任何不安全因素的方法。

有很多有缺陷JavaScript,PHP和Python代码为黑客注入恶意JavaScript和SQL创造了漏洞。 这些错误代码通过电子邮件附件,链接和浏览器提供,爬入了基于云的数据库,黑客可以在其中执行远程命令来窃取专有数据。

为什么您的应用可能很弱

许多软件开发人员和安全专业人员指出,缺少软件开发生命周期(SDLC)中内置的安全软件是造成如此多的软件漏洞的重要原因。 添加紧迫的部署截止日期,您将有罪魁祸首,这些漏洞会渗透到计算机网络,数据中心,云计算平台和移动应用程序中的漏洞,这些漏洞会渗透到消费者和公司使用的互联网连接平台和设备。

有很多有缺陷JavaScript,PHP和Python代码为黑客注入恶意JavaScript和SQL创造了漏洞。 这些错误代码通过电子邮件附件,链接和浏览器提供,爬入了基于云的数据库,黑客可以在其中执行远程命令来窃取专有数据。

许多开发人员无法通过在其应用程序开发实践中放弃安全套接字层(SSL)认证和验证来尽快发布应用程序,从而无法保护其数据。 SSL协议包含一个证书,该证书可确保使用超级文本传输协议安全(HTTPS)在Internet上将它们存储在Web服务器上的文件通过Internet来回发送到访问者的浏览器时被加密。 如果没有HTTPS和SSL保护,黑客可以通过其局域网和广域网中的路由器拦截和监视数据包,从而进行中间人攻击。

他们还可以通过地址解析协议(ARP)欺骗来劫持数据。 当黑客在本地网络上搜索特定的IP和媒体访问控制(MAC)地址时,此方法有效。 一旦他们确定了目标的IP和MAC地址,ARP就会抓取并冒充他们,将数据包从路由器发送给毫无戒心的用户。

在过去的几年中,API成为了应用程序开发的组成部分。 它们会自动向网站和移动应用程序添加功能,但是它们也不安全。 您是否测试了添加到脚本中的第三方API,以检查它们是否在您的软件环境中允许不良行为者? 许多API无法包括OAuth和两因素身份验证之类的方法来保护往返于基于云的服务器和数据中心的数据。 OAuth使用令牌来验证和保护客户端和服务器之间的数据,并且它是开源的。

由于组织的软件安全策略存在缺陷,因此许多应用程序都会破坏用户数据。 去年,我们通过第三方云协作工具为布鲁克林的制造商Alpha One Labs创建了一个协作工作组,在其中我们为LCD帽子,激光滚动标牌,3D POV显示器,智能回收箱和机器人食品创建了原型。交换。 该工作组中的电子邮件地址已公开暴露,并且被抓取和发送垃圾邮件。 已与云公司联系以解决此问题,但该公司花了大约2到3个月的时间才创建了保护地址并将其私有的功能。

对于这家云计算公司和其他各种未能解决其软件安全性问题(使它们在收到通知后仍可以保持活动几周或几个月)的组织感到沮丧 ,诞生了一个使用Django的名为BugHeist的应用程序。 它奖励个人报告和修复他们在Internet上发现的软件和硬件错误,这些错误从安全漏洞到设计,性能和功能问题不等。

为什么选择Django?

当他想到构建BugHeist的想法时,我们考虑了许多框架/平台,包括C ++,Java和PHP。 在分析了这些框架之后,我们认为Django最有意义,因为Django通过将安全代码嵌入其框架来保护数据免受最常见的软件黑客攻击。

自2016年7月启动BugHeist以来,该网站已帮助大约100家公司识别并解决了350多个软件错误和问题。 有关Django开源框架的更多详细信息,请访问djangoproject.com 。 要了解有关BugHeist开源平台的更多信息,可以访问https://github.com/owasp/blt上的GitHub存储库

让我们看一些有关云安全性问题的特定Django示例。 Django使您能够激活可保护您的站点免受以下安全问题的软件:跨站点伪造,跨站点脚本编写,SQL注入,点击劫持,不安全的SSL / HTTPS和不受保护的主机头验证。 我们将在下面详细介绍这些安全风险。

跨站点伪造请求(CSRF)

当包含恶意代码的浏览器从Web服务器窃取数据并将其发送到假站点时,就会发生CSRF。 另一个实例可以是一个网站,其中包含A帧,图像标签,或者其他不良代码触发了对欺诈网站的不安全HTTP请求。

由于初始浏览器请求已通过带有嵌入的身份验证令牌的网站的HTTPS / SSL协议批准,因此Web服务器将验证并执行恶意代码的命令,就好像它是用户的故意浏览器请求一样。 实际上,恶意代码更改了浏览器初始请求中的原始代码,将其设计为在伪装成毫无戒心的用户的同时窃取未经授权的数据。

激活Django的CSRF中间件,可确保带有POST元素的表单不受创建请求以窃取您网站中未经授权的数据的代码的影响。

这是保护BugHeist免受跨站点请求伪造的示例代码。 默认情况下,它包含在Django的“中间件类”部分中:
django.middleware.csrf.CsrfViewMiddleware

为确保攻击者不会通过注入到BugHeist的“ Post” HTML和PHP / Python中的代码窃取专有信息,我们对以下CSRF令牌标签进行了编码:

<form class="form" action="/issue/"/method="post" enctype="multipart/form-data">
{% csrf token %}

跨站点脚本(XSS)

黑客使用这种跨站点脚本编写方法将恶意代码注入网站和移动应用程序。 该代码被嵌入到毫无戒心的用户浏览器中,该浏览器将检索未经授权的数据并将其发送给可疑方。

存储的XSS是将恶意代码脚本存储在网站服务器上并在浏览器向后端请求时执行的。 当用户发送嵌入有从服务器窃取代码的脚本的浏览器请求时,这称为Reflected XSS。

默认情况下,除非在变量中将变量显式标记为“安全”,否则Django会对其进行转义或保护。

SQL注入

如果开发人员在为SQL数据库开发应用程序时无法清理其输入代码,则它为个人提供了从后端获取专有数据的理想载体。

黑客只是在代码中寻找一个易受攻击的位置,然后插入SQL查询以返回可以在Dark Web上出售或用于勒索组织(如医院或政府机构)的数据。

使用Django时,您可以通过内置的对象关系映射(ORM)进行SQL注入防御。 ORM是另一个使用面向对象编程而不是SQL代码的软件层,它为您提供了一种反复访问,编写和更新安全查询的方法。 因为它允许您使用熟悉的编程语言编写查询,所以ORM可以帮助加快后端更新。

点击劫持

在这种情况下,用户单击站点和移动应用程序上的按钮或链接,以掩盖恶意代码,这些恶意代码会在不知情的情况下重定向其操作。

Django通过中间件选项自动检测并保护网站免受可疑iframe请求的侵害,该中间件选项可防止浏览器呈现包含此错误代码的脚本。 它还具有PBKDF2bcrypt ,这是不能通过使用带有已解密密码哈希的彩虹表来破解的加密标准。 PBKDF2和bcrypt也使用大量函数来进一步随机化数据,因此也需要花费大量时间进行计算或创建,这对于黑客强行使用它们具有挑战性。

不安全的SSL / HTTPS

没有HTTPS和SSL架构的网站和移动应用服务器会发起黑客攻击。 如果没有该协议,用户的浏览器将无法确认它与服务器之间的安全连接,因为他们将无法验证站点的域名,拥有站点的组织以及在证书中加密的其他凭据。由第三方证书颁发机构颁发。

未受保护的主机头验证

为了保护您的网站或移动应用程序,您的所有连接都应在网站连接到的每个页面中都带有HTTPS标头。 HTTPS是包含HTTP传输安全性(HSTS)策略的Internet安全协议的一部分。 此策略使开发人员可以在浏览器中注册其证书,以便它们可以预加载HTTPS凭据,以便可以根据需要进行验证。 另外,发送到您的Web应用程序的任何HTTP请求都将转换为与Django的HTTPS连接。

以下代码显示了SQL和JavaScript代码,这些代码可保护数据库免受SQL注入和Django中不安全的HTTP / SSL请求的侵害:

if ‘DATABASE_URL’  in os.environ:
DEBUG = False
EMAIL_HOST = ‘smtp.sendgrid.net’
EMAIL_HOST_USER = os.environ.get ( ‘SENDGRID_USERNAME ’, ‘blank’)
EMAIL_HOST_PASSWORD = os.environ.get (‘SENDGRID_PASSWORD’ , ‘blank’)
EMAIL_PORT = 587
EMAIL_USE_TLS = True
If not TESTING:
     SECURE_SSL_REDIRECT = True
 
GS_ACCESS_KEY_ID = os.environ.get ( ‘GS_ACCESS_KEY_ID’ , ‘blank’)
GS_SECRET_ACCESS_KEY = os.environ.get ( ‘ GS_SECRET_ACCESS_KEY’ , ‘blank’)
GS_BUCKET_NAME = ‘bhfiles’
DEFAULT_FILE_STORAGE = ‘storages.backends.gs.GSBotoStorage’
GS_FILE_OVERWRITE = False
GS_QUERYSTRING_AUTH = False
MEDIA_URL = “https://bhfiles.storage.googleapis.com/”
 
ROLLBAR =  {
‘access_token’ : os.environ.get ( ‘ROLLBAR_ACCESS_TOKEN’ , ‘blank’),
‘environment’ : ‘development’ if DEBUG else ‘production’ ,
‘root’ : BASE_DIR,
‘exception_level_filters’:  [
(Http404, ‘warning’ )
]
}
import rollbar
rollbar.init (**ROLLBAR)
 
# local dev needs to set SMTP backend or fail at startup
if DEBUG:
EMAIL_BACKEND =  ‘django.core.mail.backends.console.EmailBackend’
 
ACCOUNT_EMAIL_REQUIRED  =  True
ACCOUNT_USERNAME_REQUIRED  =  True
ACCOUNT_EMAIL_VERIFICATION  =  “optional”

# Honor the ‘X-Forwarded-Proto’ header for request.is_secure( )
SECURE_PROXY_SSL_HEADER = ( ‘HTTP_X_FORWARDED_PROTO’ , ‘https’)

成为更好的应用程序安全开发人员

由于市场的需求,开发人员继续创建更多的Web应用程序,并且将多个设备上的云连接应用程序集成到个人的工作和家庭生活中,这使得软件安全至关重要。

以下是一些想要提高软件安全技能的开发人员的技巧:

  • 参与漏洞赏金活动,您可以分享在网站,移动应用程序和计算机网络上发现的软件和硬件错误,以获取赞助这些活动的公司的现金。
  • 与其他开发人员和产品经理一起为您的组织制定应用程序安全策略。
  • 参加有道德的黑客马拉松比赛并夺取国旗(CTF)事件。
  • 将您的编程技能贡献给一个开源项目。
  • 参加由OWASP和其他组织组织的行业会议,讨论最新的安全软件开发。
  • 加入现场和在线活动以及论坛,共享安全编码实践的最佳实践。
  • 通过SANS研究所,国际信息系统安全认证协会(ISC)²,国际电子商务顾问理事会(EC-Council)和其他软件行业协会等组织提供的在线和面对面课程来研究应用程序安全性。

翻译自: https://www.ibm.com/developerworks/security/library/se-think-apps-are-secure/index.html

云中数据安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值