怎么样验证用户的输入?

在谈论代码之前,我们先来看看两种不同的过滤策略。

1、仅允许我们需要的,然后禁止所有的其他我们不需要的。

2、允许所有的,排除我们不允许的。

这两种方式可以用在不同的地方。比如我们的防火墙策略,如果我们的网站仅仅提供了3W服务,那么我们只需要在防火墙的外网卡上上开放80端口就好了。如果我们需要禁止内网用户通过防火墙利用外网的电子邮件服务器(SMTP)发送邮件的话,那么我们可以在内网卡上禁用25端口来达到我们的目的。

我们现在假设我们是移民局的官员,一大群需要过海关的人,我们怎么认为他们是合法的呢?很简单,谁有护照,同时护照上允许入境的那些人就是合法的。为什么呢?因为至少这些人是已知对于我们是无害的。

那么,我们来看看如何验证用户的输入。

首先,我们可以想想,我们是否可以清楚地知道攻击者究竟会在什么地方输入什么样的内容吗?答案是否定的,我们是不知道的。所以很显然,我们也就不知道那些是我们不允许的。也就是说,验证输入的时候,我们只有一个方法行得通,那就是:只允许我们知道和熟悉的内容通过,其他的全部拒绝。

比如,对于一个人的姓名(英文)来说,他们只能包含英文字母大小写,那么我们可以用正则表达式来(^[A-Za-z]+$)约束这样的输入。

这里给出一些常用的例子:

匹配中文字符的正则表达式: [/u4e00-/u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^/x00-/xff]
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值