转义

JSON是什么?如何正确理解?

三世轮回 提交于 2019-12-02 17:20:10
1.背景介绍 什么是JSON JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。——百度百科 数据传输是我们在敲代码时,经常遇到的一个场景,前后端交互。给数据一个统一的格式有利于我们编写和解析数据。 json,是一种数据格式,在与后端的数据交互中有较为广泛的应用。 JSON的诞生 JSON是 (JavaScript Object Notation, JS 对象标记),它是一种数据交换格式。在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。 终于,在2002年的一天,道格拉斯·克罗克福特(DouglasCrockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师

PHP EOF(heredoc) 使用说明

你。 提交于 2019-12-02 12:34:40
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。 使用概述: 1. 必须后接分号,否则编译通不过。 2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。 3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。 4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。 5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。 实例 <?php echo <<<EOF <h1>我的第一个标题</h1> <p>我的第一个段落。</p> EOF; // 结束需要独立一行且前后不能空格 ?> 注意: 1.以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。 2.开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。 3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以

Python如何防止sql注入

人走茶凉 提交于 2019-12-02 12:34:07
前言 web漏洞之首莫过于sql了,不管使用哪种语言进行web后端开发,只要使用了关系型数据库,可能都会遇到sql注入攻击问题。那么在Python web开发的过程中sql注入是怎么出现的呢,又是怎么去解决这个问题的? 当然,我这里并不想讨论其他语言是如何避免sql注入的,网上关于PHP防注入的各种方法都有,Python的方法其实类似,这里我就举例来说说。 起因 漏洞产生的原因最常见的就是字符串拼接了,当然,sql注入并不只是拼接一种情况,还有像宽字节注入,特殊字符转义等等很多种,这里就说说最常见的字符串拼接,这也是初级程序员最容易犯的错误。 首先咱们定义一个类来处理mysql的操作 这个类有问题吗? 答案是:有! 这个类是有缺陷的,很容易造成sql注入,下面就说说为何会产生sql注入。 为了验证问题的真实性,这里就写一个方法来调用上面的那个类里面的方法,如果出现错误会直接抛出异常。 这个方法非常简单,一个最常见的select查询语句,也使用了最简单的字符串拼接组成sql语句,很明显传入的参数 testUrl 可控,要想进行注入测试,只需要在testUrl的值后面加上单引号即可进行sql注入测试,这个不多说,肯定是存在注入漏洞的,脚本跑一遍,看啥结果 (1064, "You have an error in your SQL syntax; check the manual

python基础

一笑奈何 提交于 2019-12-02 12:27:58
一.整数类型和变量 1)整数类型 1.整数 2.浮点数 3.字符串 注意:转义字符:转义字符 \ 可以转义很多字符,比如 \n 表示换行, \t 表示制表符,字符 \ 本身也要转义,所以 \\ 表示的字符就是 \。表示多行可以用'''...''' 4.布尔值 and、or、not 5.空值 2)变量 变量名必须是大小写英文、数字和 _ 的组合,且不能用数字开头 二.字符串和编码 三.使用list和tuple 1)列表 有序集合,可以删除和添加元素 用索引访问列表,索引序列从0开始 append():添加至列表元素末尾 insert():插入,和索引号 pop():删除元素 2)tuple 元祖,一旦定义则不可变。 注意: 只有1个元素的tuple定义时必须加一个逗号 , ,来消除歧义: >>> t = (1,) >>> t (1,) 四.条件判断 if...: elif....: else: 五.循环 1)for.....in..... 2)while break:提前结束循环 continue:跳出当前循环 六.dict和set 1)dict 字典:key:value存储,查找速度较快 2)set:和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 方法有:add();remove() 来源: https://www

个性化您的Ubuntu Linux终端

牧云@^-^@ 提交于 2019-12-02 12:09:33
问题发现 前段时间把Python程序在终端中输出设置着实改了一通,见前几天的一篇博客 Python实现设置终端显示颜色、粗体、下划线等效果 感觉世界瞬间充满了色彩,但是还是不爽,因为最关键的是, 我们最最亲爱的终端是黑白的。。。。 于是。。。。我希望“他”能够充满色彩,我还是一如既往的坏。 Linux终端颜色显示设置 原理依旧是Linux终端下的颜色设置在Linux终端中,使用转义序列来进行如上所述的显示,转义序列以ESC开头,即ASCII码下的\033,其格式为: \033[显示方式;前景色;背景色m 显示方式、前景色、背景色至少一个存在即可。 格式: \033[显示方式;前景色;背景色m 个性化Ubuntu Linux终端 设置 在~/.bashrc中添加如下代码 PS1=" \[ \033 [ 0;32m \] \A \[ \033 [ 0;31m \] \u \[ \033 [ 0;34m \] @ \[ \033 [ 0;35m \] \h \[ \033 [ 0;34m \] : \[ \033 [ 00;36m \] \W \[ \033 [ 0;33m \] $ \[ \033 [ 0m \] " 然后使用source ~/.bashrc让设置立即生效。 或者直接将以上代码输入终端,你会发现你的终端变样子了 在Linux的环境变量中,PSI是 基本提示符,对root

容器、迭代器和算法

不想你离开。 提交于 2019-12-02 12:01:08
文章目录 容器、迭代器和算法 容器的实现 Java的实现方法 C++的实现方法 容器与迭代器 链表容器与迭代器 集合与迭代器 迭代器与算法 求容器中元素纸盒 微型算法库 容器和迭代器的分类 容器的陷阱 这是《深入实践C++模板编程》第五章“容器、迭代器和算法”的读书笔记。 容器、迭代器和算法 通过C++模板可以将类型以及其他编译期常数作为参数抽离出来,使代码拜托对类型依赖,从而设计容纳不同类型的容器成为可能。 容器 是指专门用于存储某种形式组织及存储的类。 容器的实现 常见的容器有数组、链表、集合、关联组等。通常语言本身会提供几种基本容器,通过这些基本容器可以组织更复杂的容器。这些容器的共同点是 可以容纳多种类型的数据 。 弱类型的动态语言,对于数据类型不敏感,其提供的类型天然支持多种数据类型。例如Python中的 list , dict , set 等,可以在同一个容器实例中保存不同类型的数据,实现异质容器。 强类型语言,变量以及函数惨了类型固定变,这是设计支持多种数据类型容器的最大障碍。C++通过模板,使得容器和算法结构不再依赖具体类型;但是这并没有实现真正支持多种类型的容器类。支持不同类型,只是生成了不同类型的容器类。 除了C++模板,其他强语言类型也有各自容器实现方法。这里介绍Java实现容器方法。 Java的实现方法 与C++相比,Java是更高级的面相对象语言

正则表达式

浪尽此生 提交于 2019-12-02 05:33:21
参考: https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin 是对字符串进行操作的一种逻辑公式;应用对象是文本。 正则表达式可以用来判断用户名输入的格式等是否正确,预防机制,避免错误格式的数据直接传送到后端才进行判断排除 元字符 描述 \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“ \ n”匹配\n。“\n”匹配换行符。序列“ \ ”匹配“\”而“ ( ”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。 ^ 匹配字符串的开头。如果设置了RegExp对象的Multiline属性,^也表示匹配行的开始处。必须为5位到12位数字时::^\d{5,12}$。 $ 匹配字符串的结尾。如果设置了RegExp对象的Multiline属性,$也表示匹配行的结束处。 .* 表示数量。指 前面的内容可以重复出现无数次。\bhi\b. *\blucky\b表示:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。重复0次或更多次 + 重复一次或更多次。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。 { n } 匹配确定的 n 次。 { n ,}

SQL注入之宽字节注入

醉酒当歌 提交于 2019-12-02 05:28:36
SQL注入之宽字节注入 0x01简介 SQL注入近几年来连续被OWASP当作十大漏洞中最最危险的漏洞而存在。无论是从数据库中获得敏感信息还是执行一系列的恶意操作甚至是直接获取整个数据库权限,都可能发生在一次小小的提交参数的过程中。为此大多数网站开始对于SQL注入做了一定的防御方法,最早有人提出,将用户提交的所有敏感字符进行过滤和转义,要么将提交参数中的敏感字符过滤掉后再提交给数据库,要么对那些敏感字符使用转义符号进行转义,使其丧失掉注入功能后再进行提交。但我们知道,如果不对源头进行处理,再怎么亡羊补牢也是无济于事。后来这些网站在面对黑客那些令人匪夷所思的Bypass技巧面前根本没有应对方法,最终无奈选择关闭。 本篇文章,美创安全实验室将给大家介绍一种当年绕过转义防御最好用的技巧即宽字节注入攻击。 0x02编码历史 一听到“宽字节注入”,那不可避免地就要提到有关字节编码方面的知识,所以在讲解注入原理之前,我们简单讲解一下有关编码的历史。 最早美国人决定用8个可以开合的晶体管来组成不同的状态,这些晶体管只有“亮”或“不亮”两种形态,也就是对应了二进制的0和1。而1个字节有8个比特位,可以组合成2^8=256种不同的方案,他们把编号从0开始的32种状态用在规定的特殊用途,这32个字符后来成为“控制码”;他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示

斜杠反斜杠\"\\\"

两盒软妹~` 提交于 2019-12-02 02:50:10
斜杠是"."右侧的键, 反斜杠是"]" 右侧的键 在Windows系统中, 正斜杠 /表示除法,用来进行整除运算;反斜杠\用来表示目录。 在Unix系统中,/表示目录;\表示跳脱字符将特殊字符变成一般字符(如enter,$,空格等) C# 中反斜杠\与斜杠/ 转移 字符 路径的问题 在C#中 \ 是 转义字符 ,只转义其后面的一个字符,在某些特殊情况下,需要两两配对使用。转义字符的某些具体用法,如下所示: 来源: https://www.cnblogs.com/gloryhope/p/11727040.html