草稿

183 阅读2分钟

xss

 <!-- <textarea name="" id="" cols="30" rows="10">jfdsa</textarea><script>alert(1)</script></textarea> -->

 <!-- <input type="text" value="  "><script>alert(1)</script> "> -->

 <!-- <script>alert`1`</script> -->

 <!-- <svg><script>alert&#40;1&#41</script></svg> -->

 <!-- 闭合注释 -->

 <!-- input会以前面的type为准,相当于我们覆盖了type=text -->
 <!-- onerror换行是为了绕开校验 -->
 <!-- <input type="image" src onerror=
 "alert(1)" type="text"> -->

 <!-- 右边的>可以不写 -->
 <!-- <svg onload="alert(1)" -->


 <!-- 闭合标签绕开校验,利用加空格回车换行,浏览器都能够识别  -->
 <!-- </style    ><script>alert&#40;1&#41</script> -->

& | ^

  • &运算通常用于二进制取位操作,例如一个数 &1 的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数.

  • | 运算通常用于二进制特定位上的无条件赋值,例如一个数|1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数| 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。

  • xor运算通常用于对二进制的特定一位进行取反操作,因为异或可以这样定义:0和1异或0都不变,异或1则取反。   xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。

  • restrict castcade

约束的是引用的外键所在的表(即其他表),所谓的删除时,更新时都是指的包含在外键在内的更新删除的操作

regx

  • 匹配位置,^ $ (?=) (?!) \b \B
  • 正则默认贪婪的,从左往右开始匹配,有次数多能匹配肯定选多的,没有就fallback。
  • ?加在量词前面会表示非贪婪,一定要注意。
eg: "123456789".replace(/(?=(\d){2,3})/g, ',') 
     output-> ",1,2,3,4,5,6,7,89"
     
     过程如下: ,123 456789(从1开始,匹配上了3个,我们就3个,如果匹配不上3个就尝试2个)
               ,1 ,234 56789(换成以2开始)
               ,1 ,234 56789(换成以2开始)
               ,1 ,234 56789(换成以3开始)
                     .....
               ,1,2,3,4,5,6,789(换成以2开始)
               ,1,2,3,4,5,6,789(换成以8开始,不足3个,尝试2个)
               ,1,2,3,4,5,6,7,89
               
eg2: (?=\d{3}?)--表示非贪婪(但是这个贪婪还是不贪婪都不影响,因为定死了3)
     (?=(\d{3})?)--表示非贪婪(括号括起来了,表示3个数字出现1次或者0次)
     
               
eg3: (?=\d{3}?)--表示非贪婪(但是这个贪婪还是不贪婪都不影响,因为定死了3)
     (?=(\d{3})?)--表示非贪婪(括号括起来了,表示3个数字出现1次或者0次)

eg4: "123456789".replace(/(?=(\d{3}$)+)/g, ',')
	 "123456,789"
     
     "123456789".replace(/(?=(\d{3})+$)/g, ',')
	 ",123,456,789"
         
         
(m[qrs]*n)+

*、+ 代表的不是之前匹配到的,是用整体再去匹配一次
[qrs]*   -> q匹配r匹配s匹配 qrsrr还是匹配,是[qrs]*对每一个字母匹配的结果。

image.png