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

[[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

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

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