在具有json文件数据存储区的Golang应用程序中直接从客户端不安全/不良做法接受json?

时间:2017-03-11 03:02:18

标签: json web go

我有一个简单的Golang应用程序,它带有一个控制应用程序的HTTP API,api有一个由React.js应用程序驱动的前端。前端允许用户更改设置并将名为settings的json对象直接发送到API /api/settings端点(内置简单的JWT身份验证)。我将该对象解组为一个供应用程序使用的结构,如果出现错误,应用程序将使用默认结构并向客户端发送错误。我的问题是;我是正确地做这件事还是这是不安全的;将json直接发送到应用程序,没有任何服务器端验证,但是简单的json.unmarshal?

PS:我来自PHP + MySQL网络应用程序背景,接受数据库的客户端输入而不转发它是一件非常危险的事情。

1 个答案:

答案 0 :(得分:0)

原则上,是的,这是不好的,但是你需要决定风险是否超过你特定情况下的成本,因为所需的工作可能非常广泛。

无论使用模型'Never trust the client'使用的语言都倾向于提供最佳安全性。在此模型中,您假设所有请求都是恶意的,因此应进行验证和清理。这使您可以对所存储的数据充满信心,并且原则上可以防止不断变化的需求。例如;如果您将此存储的数据呈现给用户,那么您可以确信没有存储恶意内容,但这并不意味着output encoding也不会被使用。

要考虑的最后一点是如何访问数据库并创建插入。假设这是一个SQL DB,那么请确保您的查询使用named parameters而不是字符串连接。