我有一个Node应用程序,它收集用户的地址并将其发送到Yahoo PlaceFinder api(返回用户的地理位置)。
用户应填写“地址”字段,然后单击“提交”。
可以接受许多不同的地址格式,例如:
我不担心用户是否输入了有效地址。我甚至不想考虑RegEx需要什么。
我担心安全问题。
在使用我的Node app - http.get()请求处理YahooPlace finder api之前,应该采取哪些步骤(如果有的话)来清理用户的输入?
答案 0 :(得分:2)
让我给出一个相当务实的答案,除了通常的“清理你的不受信任数据与可接受值的白名单”回应之外。当您说“收集用户的地址”时,您实际上是:
如果您只是简单地接受输入并将其传递给雅虎,那么问题就在于他们的问题,而不是因为您没有让自己接触上述任何一种攻击媒介。您可能会发现,如果是这种情况,那么在消毒道路上没有太多意义,这对于像自由形式地址这样变化的东西来说将不可避免地非常困难。
答案 1 :(得分:1)
我敢说最简单的方法是将正则表达式应用于他们的输入,只允许使用字母数字字符,也可以使用逗号和句点。我不确定是否允许通过所有有效地址,但如果失败则可能会显示错误消息“仅使用[A-z0-9,。]”
从理论上讲,这应该可以缓解您看到的大多数类型的漏洞,因为他们很可能需要某种形式的控制角色来破坏您的代码。除非出现某种溢出,否则我很确定根据你的情况,逗号和句号相对无害。