IP地址SQL注入

Cyc*_*one 13 sql-injection ip-address

用户是否可以伪造从$_SERVER['REMOTE_ADDR']PHP 返回的结果,以便它们理论上可以在数据库上使用SQL注入?

这有点愚蠢,但我仍然对PHP足够新,我想知道它是否可以完成,无论我是否需要在SELECT语句从返回的IP地址中选择时清理数据库输入$_SERVER['REMOTE_ADDR'].所以,如果我想使用类似的东西$query = "SELECT * FROM users WHERE IP='" . $_SERVER['REMOTE_ADDR'] . "'";,我会这样做会有危险吗?

再一次,可能是一个"nooby"问题,但我觉得必须要问.

谢谢

Nei*_*l N 16

这是一段时间,而且不太可能,但我不会说这是不可能的.所以....

无论如何都要使用参数化查询.

即使您从未通过IP地址字段受到攻击,您仍然可以通过缓存获得更快速查询的额外好处.

  • 我查了一下他们.谢谢! (3认同)
  • 你"不会说得那么远"=你不知道答案.安德鲁麦格雷戈(下图)似乎知道他在说什么. (2认同)

And*_*gor 11

您不能依赖REMOTE_ADDR是真的......由于匿名代理或某些此类技巧,它可能是错误的地址.您可以依赖它始终是一个IP地址,因此这条路径的SQL注入是不可能的.

在堆栈底部向下,已经从进行TCP连接的数据包的源地址转换为服务器.这意味着a)它必须是一个IP地址,并且b)必须路由回客户端才能实现连接.

  • IMO这是真正的答案.如果我为每个参数化查询讲道都有一分钱,LOL. (2认同)

dan*_*ben 6

我认为有人伪造的唯一方法$_SERVER['REMOTE_ADDR']是构造一个带有虚假IP地址的IP数据包(因为它是由服务器而不是客户端设置的),在这种情况下,响应将被路由回伪造的地址.如果您担心注入攻击,我认为您没问题,因为IP数据包中的地址字段只有地址空间.


K P*_*ime 5

始终消毒所有外部投入 - 使用mysql_real_escape_string或更好地准备好的陈述