数据校验

uboot学习之五-----uboot如何启动Linux内核

风流意气都作罢 提交于 2019-12-24 12:58:13
uboot和内核到底是什么? uboot实质就是一个复杂的裸机程序;uboot可以被配置也可以做移植; 操作系统内核本身就是一个裸机程序,和我们学的uboot和其他裸机程序没有本质的区别;区别就是我们操作系统运行起来后可以分为应用层和内核层,分层后,两层的权限不同,内存访问和设备操作的管理上更加精细(内核可以随便方位各种硬件,而应用程序只能被限制的访问硬件和内存地址) 直观来看:uboot的镜像是u-boot.bin,Linux系统的镜像是zImage,这两个东西其实都是两个裸机程序镜像。从系统启动的角度来讲的。内核和uboot就是裸机程序; 部署在SD卡中特定分区内 (1)一个完整的软件+硬件的嵌入式系统,静止时(未上电)bootloader、kernel、rootfs等必须的软件都以镜像的形式存储在启动介质中(x210中是inand/SD卡);运行时都是在DDR内存中运行的,与存储介质无关。上面两个状态都是稳定状态的,第三个状态是动态过程,即从静止态到运行态的过程,也就是启动过程。也就是这整个过程。 (2)动态启动过程就是从SD卡逐步搬移到DDR内存,并且运行启动代码进行相关硬件初始化和软件架构的建立,最终达到运行时稳定状态。 (3)静止时u-boot.bin zImage rootfs都在SD卡中,他们不可能随意存在SD卡的任意位置,因此我们需要对SD卡进行一个分区

如何设计一个安全的对外接口

此生再无相见时 提交于 2019-12-24 10:03:05
前言 最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。 安全措施 个人觉得安全措施大体来看主要在两个方面,一方面就是如何保证数据在传输过程中的安全性,另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。 1. 数据加密 我们知道数据在传输过程中是很容易被抓包的,如果直接传输比如通过 http 协议,那么用户传输的数据可以被任何人获取;所以必须对数据加密,常见的做法对关键字段加密比如用户密码直接通过 md5 加密;现在主流的做法是使用 https 协议,在 http 和 tcp 之间添加一层加密层 (SSL 层),这一层负责数据的加密和解密; 2. 数据加签 数据加签就是由发送者产生一段无法伪造的一段数字串,来保证数据在传输过程中不被篡改;你可能会问数据如果已经通过 https 加密了,还有必要进行加签吗?数据在传输过程中经过加密,理论上就算被抓包,也无法对数据进行篡改;但是我们要知道加密的部分其实只是在外网,现在很多服务在内网中都需要经过很多服务跳转,所以这里的加签可以防止内网中数据被篡改; 3. 时间戳机制 数据是很容易被抓包的,但是经过如上的加密,加签处理,就算拿到数据也不能看到真实的数据;但是有不法者不关心真实的数据

bootstrapvalidator的简单校验【必填校验、长度校验、是否存在校验(remote)】

左心房为你撑大大i 提交于 2019-12-23 22:06:24
需求:输入框的"供应商编码"不能为空而且不能与数据库重复,供应商名称不能为空。 解决: 1.input如下 1 <input id="ssupplierNo" name="ssupplierNo" type="text" 2 class="form-control input-sm" 3 value="${supplierinfo.ssupplierNo}" 供应商编码 " /> 2.js函数 1 jQuery(function() { 2 $('#Form').bootstrapValidator({ 3 feedbackIcons : { 4 valid : 'glyphicon glyphicon-ok', 5 invalid : 'glyphicon glyphicon-remove', 6 validating : 'glyphicon glyphicon-refresh' 7 } 8 , 9 fields : { 10 ssupplierNo : { 11 validators : { 12 notEmpty : { 13 message : '供应商编码不能为空' 14 }, 15 stringLength : { 16 max : 50, 17 message : '不超过50个字符' 18 } 19 , 20 remote:{ 21 message:

行式填报 数据校验 --- 小计校验

[亡魂溺海] 提交于 2019-12-23 19:55:48
具体需求 行式填报表(包含增删改操作)指标名称是扩展出来的,最终效果要求本年本月值累计值符合指标代码 2 = 指标代码 3+ 指标代码 4 报表设计界面如下: 数据展现效果: 分析考虑: 行式填报表指标名称是扩展出来的报表不能准确取到参与计算单元格的位置再进行计算,故报表层面暂时不能实现校验,但是可以在回填脚本中基于回填的对象实现校验,具体思路如下 首先,从回填脚本中取出需要计算值; 其后,按照要求结合集算器的 if 函数 进行校验(提交时触发) 实现脚本如下: 效果: 数据校验通过也可正常提交入库。 来源: CSDN 作者: RQlyc 链接: https://blog.csdn.net/RQlyc/article/details/103661117

手工代码校验请求参数,XML配置方式数据校验(企业主流校验)

半腔热情 提交于 2019-12-23 14:07:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 3、 手工校验 (代码校验) 步骤一: 封装数据 步骤二: 实现校验Action ,必须继承ActionSupport 类 步骤三: 覆盖validate方法,完成对Action的业务方法 数据校验 通过代码逻辑判断参数是否有效,如果参数非法 , this.addFieldError (ActionSupport提供) workflow拦截器 跳转回 input页面 步骤四: 在jsp中 通过 <s:fieldError/> 显示错误信息 * validate方法会对Action中所有业务方法进行校验,如果只想校验某一个方法 : validate方法名() 4、 XML配置方式 数据校验 (企业主流校验) 代码校验 不适用于 大型项目, 流程数据复杂时,开发量和维护量 都会很大 xml配置校验原理 : 将很多校验规则代码已经写好,只需要在xml中定义数据所使用校验规则就可以了 步骤一 :编写jsp 步骤二 :编写Action 继承ActionSupport 或者 实现 Validateable 接口 步骤三 :封装请求参数 * 使用xml校验 必须提供get方法 步骤四 :编写校验规则xml文件 在Action所在包 编写 Action类名-validation.xml 对Action所有业务方法进行校验

【我的Linux,我做主!】浅谈MD5校验文件完整一致性

隐身守侯 提交于 2019-12-22 22:55:03
目录: (一)MD5介绍 (二)md5sum命令 (三)实战演练 (一)MD5介绍 (1.1)MD5即Message-Digest Algorithm 5(信息-摘要算法 第5版),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又名:摘要算法、哈希算法),主流编程语言普遍已由MD5实现。将数据运算为另一固定长度值(十六进制的为32位),是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5的作用是大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 (1.2)在网络传输、设备之间转存、复制大文件等时,可能出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现,那么校验文件的完整性,也是势在必行的。 (二)md5sum命令 (2.1)md5sum命令用于生成和校验文件的md5值,它会逐位对文件的内容进行校验,校验的是文件的内容,与文件名无关,即文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32位(128/4)的进制值。md5校验,有很小的概率不同的文件生成的md5可能相同,比md5更安全的校验算法还有SHA系列的。在网络传输时

文件上传漏洞(绕过姿势)

旧街凉风 提交于 2019-12-22 01:28:01
  文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接。但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识。俗话说,知己知彼方能百战不殆,因此想要研究怎么防护漏洞,就要了解怎么去利用。此篇文章主要分三部分:总结一些常见的上传文件校验方式,以及绕过校验的各种姿势,最后对此漏洞提几点防护建议。(根据个人经验总结,欢迎补充纠错~~) 文件上传校验姿势 客户端javascript校验(一般只校验后缀名) 服务端校验 文件头content-type字段校验(image/gif) 文件内容头校验(GIF89a) 后缀名黑名单校验 后缀名白名单校验 自定义正则校验 WAF设备校验(根据不同的WAF产品而定) 1.客户端校验   一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。   判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。 2.服务端校验 2.1 content-type字段校验   这里以PHP代码为例,模拟web服务器端的校验代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php if( $_FILES[ 'userfile'][ 'type']

UDP校验

不打扰是莪最后的温柔 提交于 2019-12-19 17:08:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> https://blog.csdn.net/limanjihe/article/details/85270291 https://blog.csdn.net/qiuchangyong/article/details/79945630 UDP数据报 一、UDP的概述(User Datagram Protocol,用户数据报协议) UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。 UDP提供不可靠服务,具有TCP所没有的优势: UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销。此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。 举个例子: DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。 HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。 同一种专用应用服务器在支持UDP时,一定能支持更多的活动客户机。 分组首部开销小**,TCP首部20字节,UDP首部8字节。 UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率

CRC校验程序设计

。_饼干妹妹 提交于 2019-12-19 09:18:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 程序的宗旨:通过编写CRC的校验程序,加深对CRC原理的理解,同时学会将书本上的原理运用于实际,动手实践才能学得更快。 注:本文关于CRC原理那部分内容,来自网络搜集。 1. 需求分析 编写一个CRC校验的模拟程序,该程序实现的功能如下: 输入:一串二进制比特串 输出:CRC校验码 2. CRC校验原理分析 在此,我们主要从适合于编程实现的角度分析CRC校验的算法原理,而不只是书本上关于CRC原理的介绍。 Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。 h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m,将CRC算法称为CRC-m,比如CRC-8、CRC-32、CRC-64等。 g(x)和h(x)的除运算,可以通过g和h做xor(异或

序列化组件

帅比萌擦擦* 提交于 2019-12-18 09:41:41
1,序列化 声明序列化器,具体代码如下 from rest_framework import serializers from DrfDemo.models import Book # -----------------------这是第一版get请求的serializers------------------ class PublisherSerializrs(serializers.Serializer): id = serializers.IntegerField() title = serializers.CharField(max_length=32) # 在类中写了字段,书写校验这个字段 class AuthorSerializer(serializers.Serializer): id = serializers.IntegerField() name = serializers.CharField(max_length=32) class BookSerializer(serializers.Serializer): id = serializers.IntegerField() title = serializers.CharField(max_length=32) pub_time = serializers.DateField() category =