【发布时间】:2022-11-02 10:26:38
【问题描述】:
对编码非常陌生。我有 2 个表格, zips_usa 包括美国所有格式正确的 zip(邮政编码、纬度/经度/城市/州等),以及表格 ageus 包括名字、姓氏、类别、cmets 等列。编写邮政编码半径搜索花了 3 周时间,但我到了那里,主要是因为我在这个网站上找到了答案。谢谢。 我现在需要帮助处理输出。我认为我需要表之间的连接语句,并且无法理解逻辑。任何帮助,将不胜感激。
用于 zip 半径搜索的 sql 语句运行无错误。输入由 html 表单执行。
$sql = "SELECT latitude, longitude FROM zips_usa WHERE zipcode = '$zipcode'";
表 ageus 列详细信息(用户发布到的位置)
id first_name last_name dog_type cmets 城市 州 输入的 性别 类别 邮政编码
如何连接这两个表,以便我可以选择包含来自表 ageus 的所有信息的输出,其中包括在 X 英里半径内找到的邮政编码?
【问题讨论】:
-
你的代码是张大SQL注入攻击。不要像这样在查询中插入变量。相反,使用参数化查询。
-
尝试内连接查询
-
@Brad你怎么知道的?如果邮政编码来自提交的值,则只需 $zipcode = intval($POST['zipcode']);但是这里没有显示。在这种情况下,您不知道 $zipcode 来自哪里。您是否知道您不太可能受到 SQL 注入 (sqli) 的影响?除非您对 sqli 的了解来自销售 sqli 解决方案的豺狼。我从 NIST 获得有关安全的信息。 NIST 从未在其保护网站的建议中提及 sqli。还有很多其他比sqli更容易利用的漏洞。
-
@Misunderstood Lol,每当您将任意数据插入不同的上下文时,都需要正确处理。在这种情况下,这意味着正确地转义数据。当然,没有整数可以作为 SQL 执行,这很安全,但是你读过这个问题吗? “对编码非常陌生”,它说。所有带有任意数据的查询都应该被参数化。那么,就没有什么好担心的了。否则......某个地方的某个人可能会将该变量更改为您未预料到的内容,并且您将度过糟糕的一天。学会做正确的事……不需要额外的努力。
-
你在 LOL 中失去了我。我同意,你应该学习。即参数化不是sqli的灵丹妙药。虽然 intval($zipcode) 是一个万无一失的解决方案。 “没什么好担心的”,这是不正确的。做对了。我的观点是你不对。我做符合 HIPPA 的网络应用程序。如果我犯了一个错误,它将花费我 50,000 美元以上。你呢?在我看来,您从出售他们所谓的“sqli 解决方案”的豺狼那里获得了您的信息。是的,我确实读过这个问题。你的评论没有帮助。最糟糕的是你不懂sqli。
标签: php mysql join select zipcode