所以我正在构建一些API,用户可以使用只读访问权限查询我的数据库。但是,我想阻止某些字段,特别是IP地址。我目前正在PHP中使用preg_replace
来匹配和切换IP,但我觉得有人可以通过聪明的字符串拆分MySQL函数解决这个问题。
有没有办法可以阻止/替换/混淆这个只读MySQL用户的特定字段?
记录将在(table.field):
`TrafficIp`.`Value`
他们可能使用的示例查询是
SELECT COUNT(*) Hits, Value IpAddress
FROM TrafficIp
INNER JOIN Traffic
ON Traffic.IpId = TrafficIp.Id
GROUP BY Value
ORDER BY Hits DESC
我如何诱饵和转换?
答案 0 :(得分:2)
你可以create a view of your table省略带有IP地址的字段,让API用户查询该视图,但不查询基础表。
实际上,您的API不应在查询的后端尝试执行“损坏控制”,而应该在之前过滤查询,然后再将其发送到数据库。将来自外部世界的原始SQL查询传递到您的数据库中是非常不可取的。