网络安全逐渐成为程序员的必备技能

[[340751]]

本文转载自微信公众号「跨界架构师」,作者Zachary。转载本文请联系跨界架构师公众号。   

 大家好,我是Z哥。

不知道大家有没有发现。如今,曝光某些知名公司信息泄露的事件频率越来越高。与之对应的,网络安全问题也越来越受到重视。

从百度指数摘录了两张图给大家分享下。

 

可以看到,对网络安全相关的信息和关注度在逐渐走高,特别是近几年的几次大型数据泄露等安全事件引起了不小的舆论轰动。

说实话,现在在企业做CTO风险还是蛮大的,万一所在的企业出现什么网络安全事件,CTO也得承担责任。

虽然说我们广大程序员们不用承担责任,但是一旦经你手发生的安全事件,你自然也会受到或多或少的牵连。

写这篇文章的时候正好想起一个段子,分享给大家图个乐:

有人问一位搞 WEB 安全的人为什么 PHP 是世界上最好的语言,他的回答是 PHP 网站漏洞多,有饭吃。

这可能也是目前PHP的声音越来越小的原因之一吧。

其实排除一些特定框架中的特定安全问题,具有普遍性的安全问题也不少。其中最常见的就属以下几种,我觉得我们每一位程序员应该都要知道如何尽量避免这些常见问题的发生。

  • SQL注入
  • 跨站脚本攻击(XSS)
  • 跨站请求伪造(CSRF)
  • 越权漏洞

/01 SQL注入/

SQL注入应该是最多人知道的一个安全问题。原因是由于SQL语句的编写是通过字符串拼接进行的,包括参数。那么一旦用户输入的参数改变了整个语句的含义,执行SQL语句的结果就变得不可预期了。比如,

  1. SELECT * FROM user WHERE id = ‘1 or 1 = ‘1’ 。加粗部分就是用户输入的内容。 

如果上面的这段SQL语句被执行,用户信息就全部泄露了。

SQL注入还有很多变种,比如故意让语句执行报错之类,从错误信息中获取重要信息。

如何防范呢?只要避免SQL拼接,使用参数化的方式执行SQL即可。比如上面这个例子,如果@id参数的数据类型是int,那么「or 1=‘1」自然无法转换成int类型。

/02 跨站脚本攻击(XSS)/

XSS最常出现在一些内容型站点上,因为他主要针对的是根据服务端数据动态渲染html的页面。

比如,当我在某个社区回复帖子的时候,故意输入了「楼主牛逼~

 

」。如果服务端没有做好相应的处理,直接把内容原封不动的存到了数据库,那么当帖子翻到我的回复所在的楼层,就会在显示“楼主牛逼”字样的同时出现一个提示“250”的弹窗。

 

当然,只是弹个窗没啥意思。如果脚本中获取用户本地的cookie信息上传到指定服务器,那么其他人就可以利用该用户的cookie登陆他的账号了,想想就有点后怕。

如何防范呢?要么就是过滤掉这种html标签,因为大多数场景纯文本就能满足。如果实在有富文本的需求,可以进行一次转义,作为字符来存储,避免将html标签直接保存下来。

另外,针对cookie可以设置一下httponly,这样的话js就无法获取cookie信息了。

/03 跨站请求伪造(CSRF)/

CSRF就是利用浏览器的缓存以及网站的登陆状态记忆功能,通过恶意脚本向你刚访问过的网站发起请求,让网站误认为是你本人在操作。

比如,你刚访问过某银行网站,甚至正在另一个标签页里打开着这个银行网站。然后此时不小心点又开了一个钓鱼网站,页面里面的脚本发起向该银行网站的转帐请求,你的银行账户就莫名其妙少了一笔钱。(当然现在的银行网站都考虑了这个问题)

如何防范呢?作为网站的开发者,最简单的方式就是对referer做判断,看发起该请求的来源是否可信。当然更好的方式是给每一个正常登陆的用户分配一个token,用户发起的每次请求都对这个token做一下有效性验证。

/04 越权漏洞/

「越权」顾名思义,就是超越应有的权限。比如,某个电商网站查看订单信息的url是http://www.dianshang.com/order/10001。这样的格式,如果我手动把url最后的数字修改成10002发起请求,如果服务端没有校验当前登陆人的信息,那么这个10002的订单信息就被越权获取了。

如何防范呢?主要有两点。

  1. 做好权限校验,不要偷懒。
  2. 编号或者id类的数据,避免顺序增加。还有一个额外的好处是,避免竞争对手猜到你们的真实订单数。

其实还有很多安全问题,比如支付漏洞(支付金额未校验)、上传攻击等等。但是处理起来的大体思路上和上面提到的这4个是类似的。

为了便于大家理解以及在编码时更具安全意识,我给大家提炼了一些思路。

  1. 只要是外部输入的数据,一定要做好全面的校验,确保处理并返回的数据是符合预期的。
  2. 代码的实现尽量减少多余的外部交互。
  3. 错误处理的时候,一定不要将技术层面的异常信息抛出到用户端,特别是堆栈信息。

如果这些还嫌多,记不住。那么脑子里记住一个词——「严进严出」。

好了,总结一下。

这篇呢,Z哥提醒广大程序员一定要在写代码的时候有安全意识。因为网络安全的重要性会随着互联网的进一步深入到我们的生活变得更加重要。

最常见的4种安全问题,你一定得知道如何应对。

  1. SQL注入
  2. 跨站脚本攻击(XSS)
  3. 跨站请求伪造(CSRF)
  4. 越权漏洞

对于其他的安全问题,只要时刻带着「严进严出」的思想去coding,相信也能杜绝掉大部分的隐患。

不知道你有经历过什么惊心动魄的网络安全事件吗?欢迎在评论区分享你的经验给大家哦。

 

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

(0)
运维的头像运维
上一篇2025-03-13 07:08
下一篇 2025-03-13 07:09

相关推荐

  • 个人主题怎么制作?

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

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

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

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

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

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

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

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

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

    2025-11-20
    0

发表回复

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