php - 我们应该在网站的什么地方进行数据验证?

标签 php javascript validation

我浏览了互联网上的许多主题和/或问题以寻找明确的答案,但到目前为止还没有得到任何答案。

问题的一部分已经回答了(除非你告诉我这是错误的)。数据验证应该在客户端和服务器端完成。客户端通知用户数据无效并卸载服务器以及在服务器上防止任何类型的攻击。<​​/p>

虽然在两侧进行验证可能是一项乏味的任务,但我想知道是否有某种方法可以做到这一点,这样您就不会有那么多重复的代码。

还有一件事我想知道...我有一个表,其中的行包含该行的(数据库的)id。在每一行的末尾,我都有一个删除按钮,用于从 html 中删除它,我的 JSON 对象包含我的值数组,并且发送到要从数据库中删除的 ajax 调用(2 个表之间的链接)。

这不安全(在互联网等不安全的环境中也是如此),我知道这一点。我总是可以检查客户端以查看 id 是否只是数字,如果是,则检查服务器端是否存在。但是谁告诉我用户没有进入调试器并反转了 2 行并最终删除了不应该删除的行?什么是拥有我的 ID 并避免人们颠倒它们的最佳方式?

感谢任何建议

最佳答案

Data validation should be done client side AND server side.

恕我直言,客户端并不需要这样做。但是能够在提交数据之前通知用户真是太好了。所以我称它为 pre。

Validating on both sides can be a tedious task though and I wondered if there was some way to do it so that you don't have so much duplicated code.

因为 PHP 是服务器端而 javscript 是客户端,所以防止代码重复并不容易。我知道有一种方法可以使用 xhr requests .这样您就可以在 javascript(客户端)中使用 php 验证。

At the end of each row I have a delete button to delete it from the html

请告诉我你正在使用CSRF protection . :-)

I can always check client side to see if the id is only numbers and if so then check server side if it exists.

为了防止注入(inject)恶意sql,你应该use prepared statements and parameterized queries .

关于php - 我们应该在网站的什么地方进行数据验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779552/

相关文章:

php - Mysql在多列中检测到重复值

php - 在不设置变量的情况下设置 WooCommerce 产品的价格范围

javascript - 如何将 knockout 的 Observable 数组长度绑定(bind)到 html 元素

asp.net-mvc - Entity Framework 4.1 - 现有数据库的代码优先,如何定义类,使用属性或 EntityTypeConfiguration?有什么不同?

java - 如何验证从java中的套接字流接收的整数

excel - Excel 中针对字母数字字母值的自定义数据验证

php - 为什么在PHP中使用@function(禁用每个函数的错误报告)是不好的做法?

php - 对分布在多个表上的数据进行复杂的 MySQL 查询 (PHP)

javascript - 跟踪 http 域引用

javascript - 你能使用Javascript获取图片上传时的exif数据吗?