第十三章 调试及安全性(In .net4.5) 之 验证程序输入
1. 概述
本章介绍验证程序输入的重要性以及各种验证方法:Parse、TryParse、Convert、正则表达式、JavaScriptSerializer、XML Schemas。
2. 主要内容
2.1 验证程序输入的重要性
① 正常用户的错误输入
② 恶意用户的攻击
③ 集成的其他系统的变动
2.2 管理数据完整性
① 记录完整性:一般是数据库中的一条记录,需要用主键标记。
② 取值完整性:一个数据项所允许的数据范围。
③ 引用完整性:相关的记录项引用关系要保持完整。
④ 自定义的完整性:根据个性的业务逻辑自定义的数据完整性。
*使用事务机制,可以更好的确保数据的完整性。
2.3 使用 Parse、TryParse、Convert
Parse 和 TryParse 用于将字符串类型转化为指定的类型。
CulturalInfo english = new CulturalInfo("En");
CulturalInfo dutch = new CulturalInfo("Nl"); string value = "€19,95";
decimal d = decimal.Parse(value, NumberStyles.Currency, dutch);
Console.WriteLine(d.ToString(english)); // 19.95
Convert用于在各个基类型之间转换。Convert允许null(返回默认值)。
int i = Convert.ToInt32(null);
Console.WriteLine(i); // displays 0
2.4 使用正则表达式
static bool ValidateZipCodeRegEx(string zipCode)
{
Match match = Regex.Match(zipCode, @"^[1-9][0-9]{4}\s?[a-][A-Z]{2}$", RegexOptions.IgnoreCase);
return match.Success;
}
2.5 验证 Json 和 Xml
var serialization = new JavaScriptSerializer();
var result = serialization.Deserialize<Dictionary<string, object>>(json);
3. 总结
① 验证程序输入是避免被错误输入和恶意攻击击溃的重要措施。
② 程序和数据存储都需要考虑数据完整性。
③ Parse、TryParse 和 Convert 可以用来实现类型间转换。
④ 正则表达式 可以用指定的模式匹配输入信息,或者替换指定的内容。
⑤ 接收Json和Xml信息时,要用内建的类型JavaScriptSerializer和XML Schemas 来验证有效性。
第十三章 调试及安全性(In .net4.5) 之 验证程序输入的更多相关文章
- 第十六章 调试及安全性(In .net4.5) 之 调试程序
1. 概述 本章内容包括 如何选择合适的构建类型.创建和管理编译指令.管理程序数据文件(pdb)和指令. 2. 主要内容 2.1 构建类型 .net中默认的两种生成模式是 发布(Release)模式 ...
- 第十五章 调试及安全性(In .net4.5) 之 管理程序集
1. 概述 本章将介绍 什么是程序集.如何强命名程序集.如何把程序集放入GAC.程序集版本 以及 WinMD程序集. 2. 主要内容 2.1 什么是程序集 程序集(Assembly)概念的出现,是为了 ...
- 第十四章 调试及安全性(In .net4.5) 之 对称及非对称加密
1. 概述 本章内容包括:对称及非对称加密算法..net中的加密类.使用哈希操作.创建和管理签名认证.代码访问权限 和 加密字符串. 2. 主要内容 2.1 使用对称和非对称加密 ① 对称加密:使用同 ...
- 第十七章 调试及安全性(In .net4.5) 之 程序诊断
1. 概述 生产环境中的程序,也是不能保证没有问题的.为了能方便的找出问题,.net提供了一些特性来进行程序诊断. 这些特性包括:logging.tracing .程序性能分析(profiling) ...
- 《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记
第二十三章:使用数据库 MySQL数据库 MySQL客户端界面 mysql命令行参数 参数 描述 -A 禁用自动重新生成哈希表 -b 禁用 出错后的beep声 -B 不使用历史文件 -C 压缩客户端和 ...
- Gradle 1.12用户指南翻译——第二十三章. Java 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- PRML读书会第十三章 Sequential Data(Hidden Markov Models,HMM)
主讲人 张巍 (新浪微博: @张巍_ISCAS) 软件所-张巍<zh3f@qq.com> 19:01:27 我们开始吧,十三章是关于序列数据,现实中很多数据是有前后关系的,例如语音或者DN ...
- <构建之法>第十三章到十七章有感以及这个项目读后感
<构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
随机推荐
- linux 系统启动流程
原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html (版权归原作者所有) Linux系统的启动分5个阶段,每个阶段都完成不 ...
- Android开发-API指南-任务和回退栈
Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...
- express 4.x 模板引擎与express.static
前提:要在express中使用模块引擎需要将要使用的模板引擎安装在本项目,当然,express也是要安装的.在下面实例中,我使用的模板引擎是pug(一起叫做jade) 我的目录结构如下: 根目录为st ...
- JavaScript 变量克隆和判断变量类型
一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...
- FlashBuilder的快捷键
Ctrl-F11: 执行(Run) F11: 除错(Debug) Ctrl-Alt-Down: 重复目前所在编辑列(Repeat current line ) Alt-Up: 移动本列,或选择列往上移 ...
- 慕课网-安卓工程师初养成-3-8 Java中的条件运算符
来源:http://www.imooc.com/code/1306 条件运算符( ? : )也称为 “三元运算符”. 语法形式:布尔表达式 ? 表达式1 :表达式2 运算过程:如果布尔表达式的值为 t ...
- mongodb 文件,图片存储数据库
mongodb 文件,图片存储数据库
- meta基础知识
H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-width,initia ...
- 让内层Div将外层Div撑开
在CSS排版中,如果一个层中的层使用了float浮动的话,那么就有可能会出现外层没有被内层撑开的情况,如以下代码所示: <div style="width:300px; "& ...
- Belkasoft Evidence Center could handle Chinese characters well
I've been using Belkasoft Evidence Center for a very long time. It could handle Chinese characters w ...