如何构建安全的Web应用程序

多年以来,安全专家们都在警告人们Web应用程序的漏洞,而这些警告往往会变成现实。我们经常看到这样的报道:黑客成功地渗透进入了一个Web应用。黑客或网络罪犯们也在共享新发现的漏洞,分享他们的成功故事或者对下一个目标的研究。我们不可能保证企业网络绝对无法渗透,而且黑客们已经证明了这一点,那么,为保障这些关键的企业应用,编程者应该做点儿什么呢?

[[108840]]

本文讨论在以安全为中心的计算机编程时,如何构建低风险的基于Web的应用程序。

1.查询参数化

有许多针对Web应用程序的攻击可追溯到成功窃取了口令的SQL注入攻击。企业、政府、社交网站都成为这种攻击的受害者,这使其成为一个普遍的问题。虽然许多人认为这个问题是厂商问题,但从根本上讲这属于开发者的编程问题。

网页表单的评论框、数据字段或允许自由输入数据的表单区域,特别是开放性的字符串输入,都会导致这种漏洞。SQL注入攻击甚至可以通过非可见的Web元素(如HTTP的header的值)来传递。恶意的SQL代码的简单插入,有时会导致整个数据库都有可能遭到窃取、清除或篡改,甚至被用来恶意地运行操作系统命令来破坏企业的数据库。

为阻止SQL注入,开发者必须防止非可信的输入被解析为SQL命令的一部分。阻止SQL注入的最佳方法是借助使用参数化查询的编程技术。

例如,在java标准中,可借助如下方法实现参数化查询:

String custname = request.getParameter(“customerName”);

String query = “SELECT account_balance FROM user_data WHERE user_name = ? “;

PreparedStatement pstmt = connection.prepareStatement( query );

pstmt.setString( 1, custname);

ResultSet results = pstmt.executeQuery( );

2.保证口令存储的安全

显然,如果SQL注入可被用于窃取口令,就需要我们安全地保存用户口令。但为什么我们没有这样做?

保存口令的最糟糕的方法当然就是使用纯文本;但是,加密也不会好很多。原因在于加密是可逆的,还有一个原因就是MD5或者任何其它的哈希算法都是 有问题的。当今的黑客们可以访问强大但并非十分昂贵的计算资源,这可以使他们创建甚至购买“彩虹表”,从而可以实时地破译一般强度的密码。如今,黑客们甚至不再使用彩虹表,转而使用高性能的家用计算机去执行高速度的字典攻击。密码加盐技术是一种有助于对付彩虹表攻击和删除口令哈希重复数据的编码技术,但仅有这种技术是不够的。

利用有限的资源(如,利用并不昂贵的家用电脑),攻击者可以生成GPU破解程序,针对存储口令,它每秒钟可以执行250亿次口令尝试。

为存储口令和防止GPU破解程序和类似的资源暴露口令,我们建议结合三种主要技术:采用单向算法、加盐、有意利用慢速算法。有两个很好的算法,SCRYPT 和 PBKDF2可用来以这种形式安全地存储口令。

3.输出编码的XSS防御

跨站脚本攻击(XSS)有一个更合适的名字,即JavaScript劫持,它可被用于会话劫持、站点破坏、网络扫描、破坏CSRF防御、站点重定向或钓鱼、远程托管脚本的加载、数据窃取和击键记录等,而且,攻击者还越来越频繁地使用XSS。

输出编码是一种用于阻止XSS的关键编程技术,这种技术在输出时执行。在你构建用户界面时,这种编码可以在不可信的数据被动态添加到HTML之前的最后时刻执行。

首要的规则是拒绝所有,也就是不要将不可信任的数据放置到HTML文档中,除非满足特殊情况。最重要的是,千万不要接受来自不可信源的JavaScript代码。

4.内容安全策略

内容安全策略是一种新出现的浏览器标准。其基本理念在于创造一种标准化的框架,实现基于浏览器的保护,从而只需花费开发者用较少的工作就可以阻止XSS攻击。

为了使内容安全策略有效,嵌入到HTML中的所有JavaScript都需要清除,并部署在一个独立的外部JavaScript文件中。从这一点来看,如果能够理解内容安全策略的浏览器检测到了HTML文档中嵌入的JavaScript(例如,黑客试图插入这种脚本),该操作将被拒绝。这种做法能真正地锁定浏览器,防止许多形式的XSS攻击。

5.防止跨站脚本请求伪造

一旦用户登录进入了一个安全站点,然后打开了另一个标签并无意中登录了一个恶意网站,该问题站点可能包含有跨站请求,并充分利用用户已经登录进入的事实。然后,该恶意站点可能提交虚假请求,带来重大危害,如欺骗用户将金钱从银行网站转账。

为防止这类攻击,开发者需要考虑部署加密令牌,并要求用户重新进行身份验证才能完成交易,从而防止会话劫持。

6.多因素认证

许多人认为口令作为一种单一的认证因素已经死亡。更佳的认证方案是双因素或多因素认证。总是要求用户必须携带另一种设备才能验证身份是不现实的,所以这两种认证在过去已经有了很大的普及。虽然MFA的SMS和本地应用并不完美,但确实可以减少风险。许多消费者网站和其它网络服务现在提供多因素认证,如谷歌。

7.遗忘口令的安全设计

许多网站允许用户用简单的认证就可以请求原有口令或将新口令发送到一个注册的邮件地址。其实,更强健的过程应当是:用安全问题验证身份;通过带外方法(即SMS或令牌)向用户发送一个随机生成的密码;在同样的Web会话中验证代码并增强锁定策略;用户改变口令。

虽然上述步骤并不能根除现有的每个漏洞,也无法阻击所有的攻击要素,但这些措施却有助于强化网站和应用程序。

应用程序的编程者应当学会用安全方式编写代码。这是企业安装网站安全正确防御的唯一关键机会。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/121400.html<

(0)
运维的头像运维
上一篇2025-02-21 20:53
下一篇 2025-02-21 20:55

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注