【问题标题】:Sending illegal value to server向服务器发送非法值
【发布时间】:2011-04-13 19:26:06
【问题描述】:

我的表单有一个州名下拉列表。当用户提交表单时,它会将其发送到我的 php 脚本,然后再将其添加到我的 mysql 数据库中。

如果用户使用 firebug 更改 state 值并提交,它不起作用,因为我的数据库不支持外键。

一种解决方案是将接收到的状态与状态表进行比较。 (不仅是领域,还有国家、城市、出生年份、工作等……)

大家都知道另一种解决方案吗?

【问题讨论】:

  • 嗨亚历克斯。你完全改变了我的问题。(这怎么能解决?)???
  • 我不相信我完全改变了你的问题(即它仍然具有相同的含义)。我发布了回复。
  • 感谢您的编辑和回复

标签: php mysql security firebug server-side


【解决方案1】:

一种解决方案是将接收到的状态与状态表进行比较。

【讨论】:

  • 如果我将允许的状态值复制到数组并使用 in_arary() 检查会怎样?我有像 state 这样的字段,所以检查需要很长时间?
  • @a.v 你已经说了这么多。不是数组而是表。将其与状态表进行比较。
【解决方案2】:

我会这样做:

当用户提交值(状态名称)时,它有一个内部索引(html 元素的 id 值)。然后,检查您的数据库以找到与索引号匹配的州名。

如果我将允许的状态值复制到数组并使用 in_arary() 检查会怎样?

你也可以这样做。确保使用 php 脚本而不是 javascript。

【讨论】:

    【解决方案3】:

    要么:

    A) 在将输入添加到数据库之前验证您的输入 B)使用枚举

    【讨论】:

    • 如果我将允许的状态值复制到数组并使用 in_arary() 检查会怎样?
    • 这取决于您的状态数据(和其他数据)的更改频率。如果它非常固定,我只需将可能的值存储在代码中并针对它们进行验证以避免不必要的数据库之旅。如果可能的值可能会发生变化,那么请务必将它们存储在数据库中。
    【解决方案4】:

    不要直接向数据库插入数据...在触发插入查询之前,首先检查主表中是否存在该值... 如果主表中存在该值,则只向您的期望表触发插入查询..

    【讨论】:

    • 如果我将允许的状态值复制到数组并使用 in_arary() 检查会怎样?
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 2013-11-19
    • 2016-07-31
    • 2016-10-06
    • 1970-01-01
    • 2021-09-04
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多