Web安全

Web安全

定义

黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,时的网站访问者受到侵害的行为。

分类

CSRF、SQL注入、XSS

Web中数据的传输

1、浏览器:浏览器即客户端,提供客户端和服务器端的数据信息交互。
2、传输协议:常见的传输协议有HTTP、TCP、WebSocket。
3、网络设备:路由器等
4、Server容器:即我们常说的后台,用来解析用户请求和脚本的请求,如Tomcat、Nginx
5、数据库:Server容器对数据进行操作:如读、写等。

Web中的漏洞在以上各个阶段均可能产生。

常见的漏洞

SQL注入

原理

利用后台中SQL语句的漏洞,对原有SQL进行篡改。
产生的条件是:进行SQL拼接。

  • 想象中的SQL:
SELECT * FROM user WHERE admin = 'admin' AND password = 'password';

SQL语句中字段adminpassword的值为用户传入进行拼接的。
如用户传入的admin为:admin' or 1 = 1 --;密码随意

  • 实际中的SQL:
SELECT * FROM user WHERE admin = 'admin' -- 'AND password = 'password';

--表示SQL的注释,表示之后的内容无效。所以不需要用户名和密码就能登录成功。

危害
  • 直接操作数据库,修改数据。
解决措施
  • 对用户的权限进行限制。
  • 对特殊的字符进行转义处理或编码转换,如<>=%等。

XSS(跨站脚本攻击)

定义

恶意攻击者往Web页面里面插入恶意script代码,当用户浏览该页面之时,嵌入其中Web里面的Script代码会执行,从而达到恶意攻击用户的目的。

相关知识点
  • 同源策略【协议、域名、端口三者完全相同】
  • Cookie、Session:身份认证的基本手段
  • DOM树【攻击者构造DOM节点插入到DOM树中、攻击者利用DOM事件执行JavaScript脚本】
攻击手段
  • 盗用Cookie,获取敏感信息
  • 破坏正常的页面结构,插入恶意内容
  • 实现DDOS攻击【分布式拒绝服务攻击】
原理
  • 条件:攻击者、有漏洞的服务器、受害者
    跨站脚本是在将数据输出到网页时存在的问题,导致恶意攻击者往Web页面插入恶意的HTML、JavaScript代码。
分类
  • 反射型XSS攻击【非持久型】
    发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。
  • 存储型XSS攻击 【持久型】
    存储型XSS和反射型XSS的差别仅在于提交的代码会存储在服务器端(数据库、内存等),下次目标页面时不用在提交XSS代码。
解决方案
  • 对用户输入特殊的字符进行转义或编码encode,如<>等。
  • 过滤:移除用户上传的DOM属性;移除用户删除的Style节点、Script节点、Iframe节点。
  • 尽量不要使用eval、document.createElement()等可执行字符串的方法

CSRF(跨站请求伪造)

相关知识点
  • 同源策略【协议、域名、端口三者完全相同】
  • Cookie、Session:身份认证的基本手段
原理

步骤一:用户已经成功登录到可信站点上,此时客户端已经有可信的Cookie。
步骤二:此时攻击者诱导用户点击看似无害的网站链接,攻击者可以用可信的Cookie向可信站点发起攻击。

CSRF的攻击方式
  • GET请求
  • POST请求
  • 通过邮件系统进行攻击
  • 登录CSRF攻击方式
解决方案
  • GET请求不能进行修改操作。
    【GET请求的攻击方式常见并且简单,所以GET请求只能读取数据】
  • 检查HTTP头部Referer、Origin信息。【在后台获取到请求头中的Referer、Origin】
    【Referer和Origin都表示页面的来源,Referer:协议+域名+端口+路径+参数;Origin:协议+域名+端口】
  • 一次性令牌。【存放到DOM中】
  • 验证码方式。
  • 设置Cookie不随着跨域请求发送:设置为samesite
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容