我们应该把数据验证放在网站的哪里
Where should we put data validation in a website?
我在互联网上浏览了许多线索和/或问题,寻找明确的答案,但到目前为止还没有得到任何答案。
问题的一部分已经回答了(除非你告诉我这是错误的)。数据验证应在客户端和服务器端进行。客户端通知用户无效的数据,并卸载服务器以及服务器上的数据,以防止任何类型的攻击。
不过,对双方进行验证可能是一项乏味的任务,我想知道是否有什么方法可以做到这一点,这样就不会有太多重复的代码。
还有一件事我想知道。。。我有一个包含行的表,这些行包含该行的(数据库的)id。在每一行的末尾,我都有一个删除按钮,可以将其从html中删除,html是我的JSON对象,包含我的值数组,并被发送到ajax调用以从数据库中删除(两个表之间的链接)。
这是不安全的(在互联网这样不安全的环境中),我知道这一点。我可以随时检查客户端,看看id是否只有数字,如果是,然后检查服务器端是否存在。但谁告诉我用户没有进入调试器并反转2行,最后删除了不应该删除的行?什么是最好的方法来获得我的身份证,并避免人们将其倒置?
任何建议都将受到的赞赏
数据验证应在客户端和服务器端进行。
这并不是真正需要做客户端IMHO。但是能够在提交数据之前通知用户是很好的。所以我称之为pre。
不过,对双方进行验证可能是一项乏味的任务,我想知道是否有什么方法可以做到这一点,这样就不会有太多重复的代码。
因为PHP是服务器端的,javscript是客户端的,所以防止代码重复并不容易。然而,据我所知,有一种方法是使用xhr请求。通过这种方式,您可以在javascript(客户端)中使用php验证。
在每行的末尾,我都有一个删除按钮,可以将其从html 中删除
请告诉我您正在使用CSRF保护。:-)
我总是可以检查客户端,看看id是否只有数字,如果是,那么检查服务器端是否存在。
为了防止恶意sql注入,您应该使用准备好的语句和参数化查询。
验证应始终在服务器上进行。客户端验证只是为了方便用户,从安全角度来看并不是绝对必要的(除非它打开了XSS安全漏洞)。
除此之外,您还应该对从用户收到的每个输入进行消毒。在输入通过健全性检查后(例如,如果有文本,其中应该有一个数字),您应该进行权限测试(用户是否具有执行请求的操作的适当权限?)
完成此操作后,您就可以实际执行事务了。
由于已经发布了其他答案,我建议您指定一个可以调用utility的实用程序类,并在其中存储许多有用的函数来检查数据类型&服务器端的内容,这样即使您将在客户端和服务器端进行一些出色的验证,至少您的代码将更加可读和可管理。
创建和管理自己的实用程序类的另一个好处是,您可以轻松地在所有项目中使用它们。
例如,实用程序类可以包含各种方法,从验证某个字段是否在特定的值范围内,或者它是否不包含特殊字符(使用正则表达式)等等。。。您的高级实用程序方法将侧重于防止脚本插入,sql注入,如前所述。
总而言之,你会做一次工作,并一直从中受益,我相信你不想开始检查你从头开始做的每个项目的年龄字段是否为负数或其他什么。使用Ajax和XHR可以成为服务器端和客户端代码之间的桥梁,有助于统一验证并避免重复。
- 正在删除node.js中已验证的网站
- php的网站验证不起作用
- 我们应该把数据验证放在网站的哪里
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- 为什么正则表达式不能正确验证网站URL
- 如何验证请求是否来自您网站上的脚本
- 用于验证网站 URL 的正则表达式
- 如何制作需要身份验证的网站
- 验证网站的 API
- 如何对网站进行编程以使用证书进行身份验证
- 跨域XMLHttpRequest以验证网站是否存在
- 在需要用户登录身份验证的网站上使用restify
- 验证不是't工作,现在我的网站也坏了
- javascript表单验证在网站上不起作用
- Javascript使用ASP.NET C#中的网站域名验证电子邮件地址
- 移动网站表单验证
- 使用您网站的摘要's用于CSRF的身份验证cookie
- 为hashbang URL验证noscript网站内容
- 是否有一个设计模式的网站验证与JS和PHP的建设
- 使用正则表达式在JavaScript中进行网站验证