---
title: "开发安全应用程序的五个建议"
locale: "zh-hans"
language: "zh-Hans"
published: "2018-02-22T15:53:46+08:00"
updated: "2026-03-17T23:03:57.023Z"
canonical: "https://accordhk.com/blog/zh-hans/5-tips-for-developing-a-secure-application-163"
---

# 开发安全应用程序的五个建议

多起大规模数据泄露事件凸显了应用程序安全的重要性。本文介绍五项措施，帮助开发更安全的软件解决方案。

## 重点摘要

保护应用程序需要防范SQL攻击、加密通信、通过哈希加盐保护密码、实施多因素身份验证，并开展安全审计。

我们都记得雅虎那起臭名昭著的安全漏洞事件。2013年，30亿用户的账户受到网络攻击影响，使其成为历史上规模最大的安全漏洞事件之一。类似新闻在2017年屡见不鲜。8月，信用评级机构Equifax被曝发生大规模数据泄露，影响人数达1.43亿。据安全公司Gemalto统计，2017年上半年，全球约有20亿条个人记录被盗。

 

这类安全漏洞事件将继续发生，因为政府使用的新型黑客工具意外泄露，使黑客更容易利用恶意软件窃取公司数据。据一家网络安全公司的报告预测，到2021年，网络犯罪每年将给全球造成6万亿美元的损失，甚至超过全球非法毒品交易造成的损失。

 

这些令人震惊的数字说明，在推出任何类型的[软件](<https://www.accordhk.com/>)之前，网络安全都至关重要。以下是打造安全解决方案的五个建议：

 

1. 防范SQL攻击

 

SQL攻击是OWASP十大Web[应用程序](<https://www.accordhk.com/>)漏洞列表中的主要漏洞之一。OWASP移动应用安全项目的初衷，是帮助开发人员了解威胁[Web应用程序](<https://www.accordhk.com/>)安全的常见因素。SQL攻击十分常见，当不可信来源向应用程序输入数据时，就可能发生。常见入口包括购物车、注册表单和登录表单。SQL攻击

之所以常见，是因为SQL是所有数据库使用的通用语言，而且发动此类攻击不需要太多专业知识。SQL攻击让黑客能够修改现有数据。黑客还可以泄露或销毁所有数据，甚至取得服务器管理员权限。开发人员可以通过查询参数化（Query Parametrization）防止SQL注入。在这种方式下，服务器会在执行请求之前先处理请求，以识别查询的类型。

 

2. 全面加密。加密是保护应用程序最关键的一步。2014年，黑客攻击了eBay，窃取了100名eBay员工的信息，随后以此获取了约1.45亿用户的数据。值得注意的是，黑客在eBay毫不知情的情况下篡改其系统长达229天。加密质量低下时，就可能发生这种情况。攻击者可以安装被盗的证书（certificate）来隐藏踪迹。如果HTTPS解决方案无法访问所有密钥和证书，就无法发现这些非法证书。此外，LinkedIn也曾对其[移动应用程序](<https://www.accordhk.com/>)的安全掉以轻心。公司推出新的日历集成功能时，将本地日历数据以公开方式传输到互联网上的LinkedIn服务器，任何人都可以随时查看。请确保您的应用程序已加密，并确保软件与服务器之间的所有通信都通过HTTPS连接完成。3. 确保密码安全。密码安全在任何应用程序开发中都至关重要。Adobe在2013年发生的著名数据泄露事件，源于公司未能安全地存储密码。应用程序常犯的一个错误是以未加密形式存储密码，这会使其更容易受到攻击。

因此，您应确保无法从数据库中还原密码。要切实保护密码，可以使用加密哈希函数（cryptographic hash），对输入进行混合和打乱，防止他人尝试还原。您还可以采用“哈希加盐”（hash and salt）策略，将每个密码的哈希值与被称为“盐”（salt）的随机附加值结合起来。

 

4. 实施多因素身份验证

随着多因素身份验证（multifactor authentication）逐渐普及，仅依靠密码验证身份的方式显得越来越过时。Google和Apple等许多网站及应用程序都提供多因素身份验证。[支付应用程序](<https://www.accordhk.com/>)Venmo及其安全漏洞事件说明了多因素身份验证

的重要性。Venmo的一位客户Griswold的账户遭到入侵，他发现时，账户中只剩下3000美元。虽然当时尚不清楚攻击者如何获得账户访问权限，但Venmo因不支持多因素身份验证而受到批评。

 

双因素身份验证最常见的形式是通过手机应用程序进行，但这种方式并不十分安全。最近，Twitter更新了平台的安全功能，允许用户采用第三方身份验证。Twitter用户现在可以通过Google Authenticator等第三方应用进行验证。

 

5. 开展安全审计

您是否认为自己已经尽一切努力保护[应用程序](<https://www.accordhk.com/>)，使其能够抵御任何攻击？请再想一想。您可能已经反复测试软件，但这并不能保证安全性无懈可击。开发人员亲自编写代码，因此更容易忽略某些具体因素。这正是需要从不同角度审视解决方案的原因。

要成功开展审计，首先需要明确您的要求。此外，还需要识别应用程序可能面临的风险类型，以便设计合适的测试。您也可以使用自动化工具完成这项工作。这些工具能够显著降低成本，并扩大覆盖范围。

总结。随着世界联系日益紧密，我们对软件解决方案的依赖也不断加深。随着网络犯罪增加，任何Web应用程序都难以幸免，尤其是PayPal、AliPay和Venmo等支付系统。黑客变得越来越聪明，攻击手段也越来越复杂，使网络安全面临更大挑战。黑帽黑客往往领先于负责安全防护的白帽人员。经验丰富的黑客只需10分钟就能破解一个六字符密码。这些网络盗窃行为让他们得以达成许多目的，而且不会很快停止。市场上的选择众多，转换成本也较低，因此客户不会犹豫，随时可能放弃您的方案，转而选择其他方案。声誉一旦受损，就很难恢复。本文由客座作者Ashley Rosa（阿什利·罗莎）撰写。她是一名自由撰稿人和博主。写作是她的热情所在，因此她喜欢撰写有关最新技术趋势的文章，偶尔也会涉及健康科技。

链接：http://techacute.com/5-tips-develop-secure-application/

## 常见问题

### 开发安全应用程序需要采取哪些措施？

本文建议防范SQL攻击、加密通信、确保密码安全、实施多因素身份验证，并开展安全审计。

### 如何防止SQL注入？

本文建议使用查询参数化，让服务器在执行请求之前先处理请求，识别查询类型。购物车、注册表单和登录表单都是SQL攻击的常见入口。

### 应用程序应该如何保护密码？

应确保无法从数据库中还原密码。本文建议使用加密哈希函数，并采用哈希加盐策略，将每个密码的哈希值与随机的“盐”结合。

### 软件经过反复测试后，为什么还需要安全审计？

反复测试并不能保证安全性无懈可击，开发人员也可能忽略自己编写的代码中的某些因素。安全审计能提供不同视角，并根据应用程序的要求和潜在风险设计测试。
