天津省网站制作厂家,服装行业网站建设比较好,html用表格做网站,创意网红墙随着互联网的迅猛发展#xff0c;Web应用的普及程度也愈发广泛。然而#xff0c;随之而来的是各种安全威胁的不断涌现#xff0c;其中最为常见而危险的之一就是跨站脚本攻击#xff08;Cross-Site Scripting#xff0c;简称XSS#xff09;。XSS攻击一直以来都是Web安全领… 随着互联网的迅猛发展Web应用的普及程度也愈发广泛。然而随之而来的是各种安全威胁的不断涌现其中最为常见而危险的之一就是跨站脚本攻击Cross-Site Scripting简称XSS。XSS攻击一直以来都是Web安全领域的重点关注对象其危害程度不可小觑。 在此篇博客中我将深度剖析XSS攻击从其基本原理到实际案例探讨其可能带来的后果以及如何有效地防范。通过对XSS攻击的全面解析我们希望读者能够更全面地了解这一Web安全漏洞并采取相应的措施保护自己的Web应用。
一、会话管理
1、WEB会话管理概述
1、为什么需要会话管理
http是无状态的一次请求结束连接断开服务器再收到请求无法识别此连接是哪个用户为了需要辨别访问用户需要一种记录用户的方式
2、web应用会话管理的方式
session的管理方式
cookie的管理方式
token的管理方式
2、SESSION管理方式
1、认证过程
①、服务端session是用户第一次访问应用时服务器就会创建的对象。
②、服务器并为每一个session都分配一个唯一的sessionid。
③、服务器在创建完session后会把sessionid通过cdokie返回给用户所在的浏览器
④、当用户第二次向服务器发送请求的时候就会通过cookie把sessionid传回给服务器
⑤、用户再次请求服务器能够根据sessionid找到与该用户对应的session信息。
2、认证过程 3、相关问题
①、这种方式将会话信息存储在web服务器里面当用户同时在线量比较多时这些会话信息会占据比较多的内存;
②、当应用采用集群部署的时候会遇到多台web服务器之间如何做session共享的问题
③、多个应用要共享session时还会遇到跨域问题
4、实验代码逻辑 5、前端代码
htmlmeta charsetutf-8form actionlogin.php methodPOSTusername:brinput typetext nameusernamebrpassword:brinput typetext namepasswordbrinput typesubmit valueSubmit/form/html 6、后端代码
①、后端代码(login.php)
?phpsession_start0;$usr $_POSTTusername];$pwd $_POSTIpassword];if($usradmin$pwdadmin){echo登录成功;$_SESSION[admin]1;var_dump($_SESSION);}else{echo登录失败;}?②、后端代码 (check.php)?phpsession_start0);var_dump($_SESSION);if($_SESSION[admin]1){echo没错你就是管理员,}else{echo我不知道你是谁,}?③、后端代码 (unset.php)?phpsession_start0;unset($_SESSIONTuser]);session_destroy()?
3、COOKIE管理方式
1、Cookie基础
①、Cookie是由HTTP服务器设置的
②、Cookie信息保存在浏览器中
2、Cookie和Session最大区别:
①、Cookie将数据存储客户端
②、Seesion将数据存储在服务器端
3、认证过程
①、用户发起登录请求服务端根据传入的用户密码之类的身份信息。
②、服务端验证用户是否满足登录条件如果满足就根据用户信息创建一个登录凭证
③、服务端把上一步创建好的登录凭证先对它做数字签名然后再用对称加密算法做加密处理。
④、将签名、加密后的字串写入cookie。cookie的名字必须固定。
⑤、用户登录后发起后续请求服务端根据上一步存登录凭证的cookie名字获取到相关的cookie值。
4、认证过程 5、相关问题
①、实现了服务端无状态化
②、cookie有大小限制存储不了大多数据
③、每次传送cookie增加了请求的数量对访问性能也有影响
④、同样存在跨域问题(不同域名无法互相读取cookie) 4、TOKEN管理方式
1、token管理方式
①、流程和实现上跟cookie-based基本无区别。
②、cookie-based里面写到cookie里面的ticket此情景称为token。
③、token在请求都必须通过url参数或者是http header的形式主动带上token。
2、认证过程 二、Session攻击
1、关于session攻击
1、主要攻击方式
首先通过捕获或者固定合法用户的session,然后冒充该用户来访问系统
2、三种方式来获取一个有效的session标识符
①、预测 ②、捕获 (劫持) ③、固定
2、认证凭证预测
1、原理
预测需要攻击者猜测出系统中使用的有效的session标识符类似暴力破解
2、目前Session安全
①、PHP生成随机的session id极其复杂的并且难于被预测出来
②、PHP生成session字符串无任何规律和顺序
3、会话劫持
1、含义
①、会话劫持 (Session hijacking).
②、通过窃取合法用户Session ID后使用该Session ID登录目标账号的攻击方法。
③、会话劫持最重要的部分是取得一个合法的会话标识来伪装成合法用户
2、攻击步骤
①、目标用户需要先登录站点
②、登录成功后该用户会得到站点提供的一个会话标识SessionID
③、攻击者通过某种攻击手段捕获Session ID
④、击者通过捕获到的Session ID访问站点即可获得目标用户合法会话
3、会话劫持过程 4、攻击者获取Session ID的方式有多种
①、暴力破解:尝试各种SessionID直到破解为止
②、预测: 如果SessionID使用非随机的方式产生那么就有可能计算出来
③、窃取: 使用网络嗅探XSS攻击等方法获得
5、XSS攻击:
①、跨站脚本 (Cross-Site ScriptingXSS)攻击者利用网站漏洞把恶意的脚本代码注入到网页之中
②、当其他用户浏览这些网页时就会执行其中的恶意代码。
③、主要对受害用户采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击
6、中间人攻击:
中间人 (MITM)
攻击者将它自己放到两方之间通常是客户端和服务端通信线路的中间通过破坏原始频道之后拦截一方的消息并将它们转发给另一方来实现。 4、会话固定
1、什么是会话固定
①、会话固定 (Session fixation)
②、诱骗受害者使用攻击者指定的会话标识 (SessionID)的攻击手段
③、这是攻击者获取合法会话标识的最简单的方法。
2、攻击步骤
①、攻击者通过某种手段重置目标用户的SessionID然后监听用户会话状态
②、目标用户携带攻击者设定的Session ID登录站点;
③、攻击者通过Session ID获得合法会话;
3、会话固定过程 4、重置cookie的方式
①、使用客户端脚本来设置Cookie到浏览器
script document.cookiePHPSESSID99999;/script
5、防御方案
①、开启Httponly阻止攻击者读取Cookie
但有少数低版本浏览器存在漏洞即使设置了HttpOnly也可以重写Cookie 6、重置cookie的方式
①、HTML的META标签加Set-Cookie属性
meta http-equivSet-CookiecontentPHPSESSID23333 三、Cookie安全
1、Cookie安全
1、Cookie字段
[name][value][domain][path][expires][httponly][secure]依次是: 名称、值、域名、相对根路径、过期时间、是否有httponly标志、是否有secure标志
2、子域Cookie
①、domain字段设置cookie时如不指定则默认是本域
例如www.360.com通过javaScript设置一个cookie:document.cookie“test1
例如www.360.com通过javaScript设置一个父域:document.cookie“test1; domain360.com”
3、路径Cookie
①、path字段设置cookie时如不指定则默认是当前页面路径
例如www.360.com/admin/index.php页面设置一个cookiedocument.cookie“test1
Path值是/admin 只有该/admin/径下的页面才能读取到该cookie
2、HttpOnly
1、什么是HttpOnly
HttpOnly是Cookie的一种属性指示浏览器不要在除HTTP (和 HTTPS)请求之外暴露Cookie。PHP setCookie0最后一项
2、如何设置
Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项。
开启方法为:
?phpsetcookie(abc,test, NULL, NULL,NULL,NULL,TRUE);setrawcookie(abc,test, NULL,NULL, NULLNULL,TRUE);?
3、相关函数
setcookie():
setcookie() 函数向客户端发送一个 HTTP cookie 4、设置httponly 5、读取HttpOnly Cookie
Phpinfo() ②、CVE-2012-0053
Apache服务器2.2.0-2.2.21版本存在一个漏洞攻击者可通过给网站植入超大的Cookie使得HTTP头超过apache的LimitRequestFieldSize (最大请求长度)4192字节apache便会返回400错误并在返回信息中包含了http-onlycookies 3、Cookie存储
1、本地存储与内存存储
①、存储方式与过期时间 (expires) 相关。
②、没设置过期时间则是内存Cookie浏览器关闭cookie失效:
③、设置了时间点cookie会以文本的形式保存在系统本地。
④、Document.cookieexpires1;expiresMon, 01 Jan 2020 00:00:00 GMT方式更安全
2、Cookie本地存储方式
浏览器本地存储方式: