哪个更好做客户端或服务器端验证?
在我们的情况下,我们正在使用
我做的很多验证都是在用户输入数据时验证数据.例如,我使用该keypress事件来防止文本框中的字母,设置最大字符数以及数字在一个范围内.
我想更好的问题是,在客户端进行服务器端验证有什么好处吗?
很棒的回答每个人.我们拥有的网站受密码保护,用户群较小(<50).如果他们没有运行JavaScript,我们将发送忍者.但如果我们为每个人设计一个网站,我同意在双方进行验证.
我不太明白为什么客户端验证是一个潜在的安全风险或更多的安全风险而不是服务器端验证?有人可以给我一些场景吗?
感谢所有评论或发布答案的人!我保留了我原来的问题,并在下面更新完整性.
[2011年2月16日 - 更新2]正如一些人所指出的那样 - 我的问题应该是:给定一个标准的asp.net 4表单,如果我没有任何服务器端验证,我可以使用哪种类型的恶意攻击?
这是我对这个问题的看法.
请随时继续发表评论......如果以上任何内容不正确,请告诉我.谢谢!
[2011年2月3日 - 更新1]我要感谢大家的回答!也许我应该问相反的问题:
假设一个简单的asp.net 4.0 Web表单(formview + datasource,启用了请求验证),允许登录用户将注释发布到公共页面(存储在sql server db表中的注释).我应该对服务器端的新"注释"执行什么类型的数据验证或清理?
[2011年1月19日 - 原始问题]我们的asp.net 4网站有一些用户可以提交数据的表单,我们在客户端使用jquery验证.用户必须使用有效帐户登录才能访问这些表单.
我知道我们的客户端验证规则很容易被绕过,客户端可以在没有必填字段的情况下发布数据等.这与我无关 - 用户必须登录,我不认为我们的数据非常"敏感"我也不会说任何验证都是"关键"的.输入数据使用SqlParameters写入数据库(防止sql注入),我们依赖asp.net请求验证来防御潜在危险的html输入.
是否真的值得花时间在服务器上重写各种jquery验证规则?具体来说,恶意用户如何破坏我们的服务器或我们可以开放哪些特定的攻击?
我很抱歉,因为看起来这个问题已在本网站上讨论了几次 - 但我还没有找到一个答案,引用了未执行服务器端验证的特定风险或问题.提前致谢
所有这一切都是新的,请原谅我的无知.我想弄清楚如何在我的表单中添加"确认您的密码"字段.使用PHP和mySQL.这是在html表单代码中输入的,如何将其设置为自动检查密码和确认密码字段是否匹配.
我有一个表单用户填写,JavaScript用于验证输入(例如,确保密码字段不留空).由于JavaScript是客户端而没有编译,任何人都可以轻松搞砸它.这是否意味着有必要在服务器上再次验证来自用户的数据?如果是的话,有没有它可以提高效率,因为JavaScript(理论上)已经做到了?
我们正在构建使用基于位置的定价的服务.用户可以输入地址并查看其区域中的价格,这由各种服务器端算法确定.然后可以根据这些价格订购商品.
我想知道在这种情况下我们是否可以使用客户端地理编码(以避免达到Google Maps API使用限制),例如用户输入他的地址,浏览器使用JS库获取地理编码结果并将其包含在表单提交中.问题是用户可能会篡改表单提交,并可能将订单下达到他的地址,以获取适用于不同坐标集的价格.
我想听听你对如何确保这一点的建议.例如,如果地理编码结果可以某种方式签名以验证它没有被篡改,那将是惊人的吗?
我正在设计Flex中的应用程序,该应用程序连接到某些Web服务以执行一些金融交易.Web服务使用https协议进行保护,并要求在每次请求时登录时创建用户令牌.这用于验证和授权用户.到现在为止还挺好.
诀窍在于,并非所有的Web服务都是粗粒度的.举个例子,我们可以有两种Web服务方法:EnoughFounds和Transfer.因此,只有在方法EnoughFounds回复"true"之后,才会执行Transfer.此逻辑在Flex应用程序代码中编程.
我呈现的场景如下:如果有人下载应用程序并对其进行反编译会怎样.然后修改代码,以便不执行步骤EnougFunds.或者也许写一个全新的客户端甚至可能在其他技术中执行Transfer而不通过EnoughFunds步骤.在执行Transfer时,将在服务器上授权和验证用户; 但由于他正在使用他的真实证书,他将能够执行转移.他跳过的检查属于业务逻辑而不属于安全域.我需要以某种方式确保执行应用程序的代码是未修改的我编写的Flex代码和用户下载的代码.我怎样才能做到这一点?我知道我可以重写服务,以便在服务器上执行序列,
在我看来,必须有一些安全机制来解决这个特殊问题.
请注意,我不是在寻找有关最佳实践的建议.我的要求是不要在服务器端改变任何东西.如何在不更改服务的情况下保护协议级别的序列?
security ×5
javascript ×3
validation ×3
asp.net ×2
apache-flex ×1
c# ×1
decompiling ×1
flex3 ×1
forms ×1
geocoding ×1
google-maps ×1
php ×1
web-services ×1