Questions tagged «validation»

与验证数据有关的问题的标签。


25
一个人应该多远进行一次电子邮件地址验证?
我想知道人们应该花多长时间验证电子邮件地址。我的领域主要是网络开发,但这适用于任何地方。 我看过几种方法: 只需检查是否存在“ @”,这很简单,但当然不是那么可靠。 用于标准电子邮件格式的更复杂的正则表达式测试 一个针对RFC 2822的完整正则表达式 -问题在于通常一个电子邮件地址可能是有效的,但它可能不是用户的意思 DNS验证 SMTP验证 正如许多人可能知道(但许多人却不知道)一样,电子邮件地址可能具有很多人通常不考虑的许多奇怪变化(请参阅RFC 2822 3.4.1),但是您必须考虑以下目标:您的验证:您只是在尝试确保可以将电子邮件发送到某个地址,或者是用户可能要输入的电子邮件(在很多其他晦涩的情况下,否则“有效”是不可能的)的地址)。 我考虑过的一个选项只是用一个更加深奥的地址发出警告,但仍然允许请求通过,但这确实增加了表单的复杂性,并且大多数用户很可能会感到困惑。 虽然DNS验证/ SMTP验证似乎很容易,但我可以预见到DNS服务器/ SMTP服务器暂时关闭且用户无法在某处注册,或者用户的SMTP服务器不支持所需功能的问题。 一些经验丰富的开发人员将如何处理此问题?除了我列出的方法以外,还有其他方法吗? 编辑:我完全忘记了最显而易见的一切,发送确认电子邮件!感谢答复者指出这一点。是的,这很简单,但是涉及的每个人确实需要额外的麻烦。用户必须获取一些电子邮件,开发人员需要在甚至确认用户数据有效之前记住用户数据。

7
如果函数必须在执行预期的行为之前执行null检查,这是不好的设计吗?
所以我不知道这是好是坏的代码设计,所以我想我最好问一下。 我经常创建用于处理涉及类的数据的方法,并且经常对方法进行大量检查,以确保事先没有空引用或其他错误。 一个非常基本的例子: // fields and properties private Entity _someEntity; public Entity SomeEntity => _someEntity; public void AssignEntity(Entity entity){ _someEntity = entity; } public void SetName(string name) { if (_someEntity == null) return; //check to avoid null ref _someEntity.Name = name; label.SetText(_someEntity.Name); } 因此,您可以看到im每次都检查null。但是该方法应该没有此检查吗? 例如,外部代码应事先清除数据,这样方法就不需要进行如下验证: if(entity != null) // this …
67 c#  design  validation 

8
如果有意义的值超出范围,我应该抛出异常还是自己处理?
我写了一个表示纬度/经度坐标的结构。对于纬度,其值的范围是-180至180,对于纬度,其值的范围是90至-90。 如果该结构的用户给我提供的值超出该范围,则我有2个选择: 引发异常(arg超出范围) 将值转换为约束 因为坐标-185具有含义(因为极坐标可以很容易地将其转换为+175),所以我可以接受并转换它。 最好抛出一个异常来告诉用户他的代码给了我一个它不应该具有的值吗? 编辑:另外,我知道纬度/经度和坐标之间的区别,但是我想简化一下以便于讨论-这并不是最聪明的主意

4
我们应该在哪里验证领域模型
我仍在寻找域模型验证的最佳实践。将验证放入域模型的构造函数中好吗?我的域模型验证示例如下: public class Order { private readonly List<OrderLine> _lineItems; public virtual Customer Customer { get; private set; } public virtual DateTime OrderDate { get; private set; } public virtual decimal OrderTotal { get; private set; } public Order (Customer customer) { if (customer == null) throw new ArgumentException("Customer name must …

9
C#中的构造函数参数验证-最佳做法
构造函数参数验证的最佳实践是什么? 假设有一个简单的C#: public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } 抛出异常是否可以接受? 我遇到的替代方法是在实例化之前进行预验证: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Text cannot be empty"); return null; } else { return new …

21
真的需要软件测试吗?
我是正在研究BE(CS)的学生,我的问题如下: 是否需要在软件领域进行测试? 如果我们非常谨慎地创建软件,那么为什么要进行测试? 经过测试,我们是否可以确定已经实现了该目标(产品/软件按预期工作),因为我们已经对其进行了测试?可能吗? 我的问题:是否需要测试软件?

7
即使我知道该方法无法返回错误的输入,我也应该验证方法调用的返回值吗?
我想知道我是否应该通过验证方法调用的返回值是否符合我的期望来进行防御,即使我知道我正在调用的方法将满足此类期望也是如此。 给予 User getUser(Int id) { User temp = new User(id); temp.setName("John"); return temp; } 我应该做吗 void myMethod() { User user = getUser(1234); System.out.println(user.getName()); } 要么 void myMethod() { User user = getUser(1234); // Validating Preconditions.checkNotNull(user, "User can not be null."); Preconditions.checkNotNull(user.getName(), "User's name can not be null."); System.out.println(user.getName()); } …

5
数据输入验证-在哪里?多少?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 数据输入验证对我来说一直是内部的斗争。 即将在我们的旧应用程序重写项目中添加一个真正的安全框架和代码(到目前为止,该框架几乎保持了卡式城堡般的旧安全代码和数据验证),我再次想知道应该验证多少,哪里等等 在担任Java专业开发人员的5年中,我创建并完善了个人规则,以进行数据输入验证和安全措施。当我想改进自己的方法时,我希望有人听到你们的一些想法。通用规则和过程很好,并且特定于Java的规则和过程也很好。 归纳起来,以下是我的指南(在3层Web应用程序样式中公开),并带有简要说明: 第一层客户端(浏览器):最低限度的验证,只有不变的规则(必填电子邮件字段,必须选择一项,依此类推);减少使用诸如“ 6到20个字符之间”之类的附加验证的频率,因为这会增加对变更的维护工作(可以在业务代码稳定后添加); 第一层服务器端(网络通信处理,“控制器”):我对此没有规定,但我认为此处仅应处理数据处理和组装/解析错误(生日字段不是有效日期);在此处添加进一步的验证很容易使其变得很无聊。 第二层(业务层):可靠的验证,不少于;输入数据格式,范围,值,内部状态检查(是否可以随时调用方法),用户角色/权限等;使用尽可能少的用户输入数据,如果需要,再次从数据库中检索它;如果我们也将检索到的数据库数据也视为输入,则只有在已知某些特定数据在DB上不可靠或已损坏得足够多的情况下,我才会对其进行验证-强类型化在这里做了大部分工作,恕我直言; 第三层(数据层/ DAL / DAO):从来没有认为这里需要太多的验证,因为只有业务层才可以访问数据(在某些情况下,例如“ param1为true时,param2不能为空”验证);但是请注意,当我的意思是“这里”是指“访问数据库的代码”或“ SQL执行方法”时,数据库本身是完全相反的; 数据库(数据模型):需要充分考虑,强大和自我实施,以尽可能避免DB上的数据不正确和损坏,并具有良好的主键,外键,约束,数据类型/长度/大小/ precision等-我不再赘述,因为他们有自己的私人讨论。 我知道早期的数据验证是不错的并且是性能方面的,但是重复的数据验证是一个无聊的过程,并且我承认数据验证本身很烦人。这就是为什么这么多编码员跳过它或半途而废的原因。同样,如果每个重复的验证并非始终保持同步,则可能是一个错误。这些是当今我更喜欢将大多数验证放到业务层的主要原因,但要浪费时间,带宽和CPU,并要逐案处理异常。 所以,对于这个你有什么想法?反对意见?您还有其他程序吗?提到这样的话题?任何贡献均有效。 注意:如果您正在考虑Java的做事方式,我们的应用程序是基于Spring的Spring MVC和MyBatis(性能和不良的数据库模型排除了ORM解决方案);我计划将Spring Security添加为我们的安全提供程序以及JSR 303(休眠验证器?)。 谢谢! 编辑:在第三层的一些额外的澄清。

6
在访问控制层之前先具有验证层是否可以
我正在创建一个API组合式Web应用程序,在此应用程序中,我们有不同的层,各自在工作。 第一层是验证用户输入的验证层,如果通过验证,则将其移至第二层(即访问控制层),否则返回错误消息 第二层是访问控制,它检查用户是否具有执行其想要执行的任务的权限,如果用户具有权限,则将请求移至下一层,否则返回错误消息 第三层是控制器层,我们具有应用逻辑 我的问题是在访问控制之前可以具有验证层吗?如果用户尝试执行用户没有权限的任务并且我们正在发回验证错误消息怎么办?用户将向端点发送请求并与验证层进行对话,并且仅在通过验证之后,他才会看到消息You can't access this! 我觉得很奇怪,所以这样还好吗?或者在基础设施方面我还有其他选择吗?

6
一个电话号码应允许使用哪些特殊字符?
因此,我正在设计一个供全球用户使用的网页,其中包括来自加拿大,美国,印度,英国等地的用户。我需要对此电话号码字段进行验证,但是我不确定执行此操作的最佳方法。 我能想到的一些有效格式是: 1800123456(印度) 美国电话号码中使用“-” 我对应该允许用户输入哪些特殊字符感到困惑(例如- / ())。过去其他人如何解决这个问题?

9
“ if password == XXXXXXX”是否足以确保最低安全性?
如果我为具有中到低安全风险的应用程序创建登录名(换句话说,它不是银行应用程序或任何其他应用程序),那么我可以接受用户输入的密码,只需输入类似以下内容的密码即可: if(enteredPassword == verifiedPassword) SendToRestrictedArea(); else DisplayPasswordUnknownMessage(); 这似乎很容易有效,但是我当然不介意是否仅此而已。对用户名/密码组合进行简单检查是否足够? 更新:特定项目恰好是Web服务,验证完全是服务器端的,并且不是开源的。域会改变您的处理方式吗?

5
验证应位于哪一层?
我正在使用Spring Boot创建一个Rest API,并且正在使用Hibernate Validation来验证请求输入。 但是我还需要其他类型的验证,例如,当需要检查更新数据时,如果公司ID不存在,我想抛出一个自定义异常。 该验证应该位于服务层还是控制器层? 服务层: public Company update(Company entity) { if (entity.getId() == null || repository.findOne(entity.getId()) == null) { throw new ResourceNotFoundException("can not update un existence data with id : " + entity.getId()); } return repository.saveAndFlush(entity); } 控制器层: public HttpEntity<CompanyResource> update(@Valid @RequestBody Company companyRequest) { Company company = …

8
什么时候应该在C中检查指针是否为NULL?
总结: C语言中的函数是否应该始终检查以确保未取消引用NULL指针?如果不是,何时跳过这些检查是否合适? 详细资料: 我读过一些有关编程面试的书,我想知道在C语言中对函数参数进行输入验证的适当程度是多少?显然,任何需要用户输入的功能都需要执行验证,包括NULL在取消引用指针之前检查指针。但是,如果您不希望通过API公开同一文件中的函数,该怎么办? 例如,以下内容出现在git的源代码中: static unsigned short graph_get_current_column_color(const struct git_graph *graph) { if (!want_color(graph->revs->diffopt.use_color)) return column_colors_max; return graph->default_column_color; } 如果*graph为,NULL则将取消引用空指针,这可能会使程序崩溃,但可能导致某些其他不可预测的行为。另一方面,函数是static,因此程序员可能已经验证了输入。我不知道,我只是随机选择了它,因为它是用C编写的应用程序中的一个简短示例。我已经看到许多其他地方使用了指针而不检查NULL。我的问题不是针对此代码段的。 我在异常处理的上下文中看到了一个类似的问题。但是,对于不安全的语言(例如C或C ++),不会自动传播未处理的异常。 另一方面,我在开放源代码项目(例如上面的示例)中看到了很多代码,这些代码在使用它们之前不做任何指针检查。我想知道是否有人对何时将检查放入函数与是否假定使用正确参数调用函数的准则进行了思考。 对于编写生产代码,我通常对此问题感兴趣。但是我也对编程面试感兴趣。例如,许多算法教科书(例如CLR)倾向于以伪代码表示算法,而没有任何错误检查。但是,尽管这对于理解算法的核心很有帮助,但显然不是一种好的编程实践。因此,我不想告诉采访者我正在跳过错误检查以简化代码示例(就像教科书一样)。但是我也不想出现带有过多错误检查的低效率代码。例如,graph_get_current_column_color可以将其修改为检查*graph空值,但不清楚是否*graph为空值,除非不取消引用它。
18 c  validation  null 

4
在一处管理客户端和服务器端验证
我在船上100%与1的情况应该 肯定使用了客户端和服务器端的数据验证。 但是,在我工作过的框架和环境中,我见过的方法从来都不是DRY。大多数情况下,没有计划或模式-验证写在模型规范中,而验证则写在视图上的表单中。(注意:我大部分的第一手经验是使用Rails,Sinatra和带有jQuery的PHP) 考虑一下,创建一个生成器似乎并不困难,只要生成一组验证(例如,模型名称,字段,条件),就可以生成必要的客户端和服务器端材料。或者,这种工具可以接受服务器端验证(例如validatesActiveRecord模型中的代码),并生成客户端验证(例如jQuery插件),然后将其应用于表单。 显然,以上只是“嘿,我有这个主意”,而不是正式的建议。这种事情肯定比这个主意击中时看起来要困难得多。 这使我想到一个问题:您将如何设计一种“一次写入,在服务器和客户端上运行”的数据验证技术? 相关子主题:是否存在针对任何特定框架或客户端服务器技术的类似工具?尝试仅维护一组验证有哪些主要难题或挑战?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.