2019.4.9

2019.4.9

1.英语单词计划(153,154)

2.Oracle学习: ①标量子查询: 返回单行单列的子查询
②成对比较子查询,多列比较子查询,内外交互子查询(相关子查询)的概念
③输入edit或者ed可以进入文本编辑状态,可以编辑修改上一次的查询语句,类似于vi,退出后用/可以执行
④Oracle中的集合运算(union,union all,intersect,minus),集合运算要求两个集合的结构要保持一致,并且只能对第一个查询的列做order by操作
一般操作能用union all的不会用union,因为去重要花费系统资源

3.数据结构学习: ①树的先序,中序,后序遍历,图的深度优先,广度优先遍历的各种不用递归的算法思路

	   去除递归的核心思路在于,每次递归保存了什么数据,可以通过扩充数据域来去除递归

	②查找表: 由同一类型的数据元素(或记录)构成的集合

4.读《白帽子讲Web安全》:

	①理解XSS: 假设有一个页面把用户的输入显示出来,例如
			<?php

			  $input = $_GET["param"];
			  echo "<div>".$input."</div>";
			?>

	 正常情况下的用户输入后的url: http://www.a.com/test.php?param=你好!  ,页面也会只输出一句话你好
	 但是如果这样提交 : http://www.a.com/test.php?parm=<script>alert(/xss/)</script> , 则会执行JS脚本,这是反射型的XSS

	②存储型的XSS:例如某个黑客写下一篇包含恶意JS代码的博客,那么所有访问者都会受到危害。这样保存在服务器端的XSS就是存储型XSS

	③DOM Based XSS : 通过修改页面DOM节点形成的XSS

		ps: 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),它将网页转化为一个Javascript对象,
	            从而用Javascript脚本进行各种操作(比如增删元素等),获得了足够的能力来创建动态的 HTML。

		    在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。

	ps: XSS的利用需要深厚的JavaScript功底,所以书中的具体利用和构造技巧日后再看

	④XSS的防御思路: (1)设置HttpOnly属性防止JavaScript读取Cookie ,但是这不能防御攻击者利用AJAX来构造Http请求等其他利用方法
		     	 (2)输入检查,但是如何保证用户体验,还有输入URL时又如何处理呢?
		     	 (3)输出检查,使用HtmlEncode或者JavascriptEncode
				   >要求escapeJavacript()的变量输出一定要在引号内,否则使用JavascriptEncode()函数,将除了数字和字母外的所有字符,都使用16进制编码
			   
			   ps: 书上原话是要求JavacriptEncode的变量输出一定要在引号内,个人认为结合上下文可能有误,代验证

	⑤正确的XSS防御思路:  (1)在Html标签中输出 ----> 使用HtmlEncode
			      (2)在Html属性中输出 ----> 使用HtmlEncode
			      (3)在script标签中输出 ----> 使用JavascriptEncode   (首先要确保变量在引号中)
			      (4)在事件中输出  ----> 使用JavascriptEncode
			      (5)在URL中输出 ----> 使用URLEncode    (首先检查变量开头,无http则自动添加,防止伪协议攻击)

	  处理富文本:使用白名单策略,屏蔽所有危险的标签,如<iframe>,<script>,<style>,<form>等
	  处理DOM XSS: 在变量输出到<script>时,执行一次JavascriptEncode,其次在document.write输出到HTML页面时,输出到事件或者脚本,则再一次JavascriptEncode,输出到HTML内容或者属性时,则HtmlEncode

猜你喜欢

转载自blog.csdn.net/gw_csdn/article/details/89165376
今日推荐