P0-3 (часть 2): не отдавать пароль устройства повторно через GET
GetIoTDevice больше не возвращает mqtt_password (deviceToResponse получает ). Пароль остаётся доступен только один раз — при создании устройства. Хэширование паролей в БД + перевод EMQX на алгоритм хэша (часть 1) требует изменения emqx.conf и миграции — отдельным шагом.
This commit is contained in:
@@ -34,7 +34,9 @@ type iotDeviceUpdateRequest struct {
|
|||||||
Enabled *bool `json:"enabled"`
|
Enabled *bool `json:"enabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// iotDeviceResponse — ответ API. MQTTPassword — только в GET по имени.
|
// iotDeviceResponse — ответ API. MQTTPassword заполняется ТОЛЬКО при создании
|
||||||
|
// устройства (отдаётся один раз) и НИКОГДА при чтении — чтобы пароль не утекал
|
||||||
|
// через GET и не хранился в логах/истории.
|
||||||
type iotDeviceResponse struct {
|
type iotDeviceResponse struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Namespace string `json:"namespace"`
|
Namespace string `json:"namespace"`
|
||||||
@@ -50,7 +52,8 @@ type iotDeviceResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// deviceToResponse конвертирует устройство из БД в ответ API.
|
// deviceToResponse конвертирует устройство из БД в ответ API.
|
||||||
// password отдаётся только если непустая (передаётся явно из Get).
|
// password отдаётся только если непустая — только на создании, при чтении
|
||||||
|
// передаётся пустая строка (пароль повторно не показывается).
|
||||||
func deviceToResponse(d *store.Device, password string) iotDeviceResponse {
|
func deviceToResponse(d *store.Device, password string) iotDeviceResponse {
|
||||||
resp := iotDeviceResponse{
|
resp := iotDeviceResponse{
|
||||||
Name: d.Name,
|
Name: d.Name,
|
||||||
@@ -193,7 +196,7 @@ func (h *Handler) GetIoTDevice(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
writeJSON(w, http.StatusOK, deviceToResponse(device, device.MQTTPassword))
|
writeJSON(w, http.StatusOK, deviceToResponse(device, ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteIoTDevice — DELETE /v1/namespaces/{ns}/iot/devices/{name}.
|
// DeleteIoTDevice — DELETE /v1/namespaces/{ns}/iot/devices/{name}.
|
||||||
|
|||||||
Reference in New Issue
Block a user