GO的网络编程和网络安全常见漏洞 | 青训营;

81 阅读3分钟

网络编程

互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。

socket编程

Socket是应用层与TCP/IP协议组信的中间软件抽象层。

TCP通信

TCP协议

TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。

TCP服务端

TCP服务端的处理流程为:监听端口,接收客户端请求建立链接,创建goroutine处理链接。

TCP客户端

TCP客户端进行TCP通信流程:建立与服务端的链接,进行数据收发,关闭链接。

网络安全常见漏洞

网络常见安全漏洞是指一些可以被黑客或者恶意软件利用的网络系统或者应用程序的缺陷,从而导致数据泄露、服务中断、权限提升等危害。网络常见安全漏洞有以下几种类型:

  • SQL注入:这是一种利用数据库查询语句中的输入参数来执行恶意代码的攻击,从而获取或者修改数据库中的敏感信息。例如,如果一个网站的登录表单没有对用户输入的用户名和密码进行合法性检查,那么黑客可以输入一些特殊字符,如' or 1=1 --,来绕过验证,或者输入一些SQL语句,如'; drop table users; --,来删除数据库中的用户表。
    • 跨站脚本(XSS) :这是一种利用网页中的动态内容来插入恶意代码的攻击,从而在用户浏览器中执行,获取或者修改用户的信息,或者诱导用户进行一些不安全的操作。例如,如果一个网站的评论功能没有对用户输入的内容进行过滤,那么黑客可以输入一些HTML标签或者JavaScript代码,如<script>alert('你中招了!')</script>,来弹出一个警告框,或者输入一些更危险的代码,如<script>document.cookie='sessionid=123456'</script>,来修改用户的cookie值。
  • 跨站请求伪造(CSRF) :这是一种利用用户已经登录的网站的身份认证来执行恶意请求的攻击,从而在用户不知情的情况下进行一些不安全的操作。例如,如果一个网站的转账功能没有对用户请求进行验证,那么黑客可以在另一个网站上制作一个链接或者表单,如<a href='http://www.example.com/transfer?from=alice&to=bob&amount=1000'>点击领取奖金</a>,或者<form action='http://www.example.com/transfer' method='post'><input type='hidden' name='from' value='alice'><input type='hidden' name='to' value='bob'><input type='hidden' name='amount' value='1000'><input type='submit' value='点击领取奖金'></form>,来诱导用户点击或者提交,从而在用户不知情的情况下完成转账操作。
  • 缓冲区溢出:这是一种利用程序在处理数据时没有对缓冲区大小进行检查而造成内存覆盖的攻击,从而执行恶意代码或者破坏程序正常运行。例如,如果一个程序在接收用户输入时没有限制输入长度,那么黑客可以输入一些超过缓冲区大小的数据,如AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\xe9\xf3\xff\xff\xff,来覆盖缓冲区后面的内存地址和内容,从而改变程序的执行流程或者注入恶意代码。