[英]Options to hide ssid password in an ESP32 sketch
我正在使用ESP32
,但我認為該問題適用於esp8266
或 Arduino WIFI。 這就是我擴展標簽的原因。 如果我錯了,請告訴我。
我有一個使用 WIFI 發送 http 請求的工作草圖。
我當前的代碼以明文形式包含 SSID 和密碼:
const char *ssid = "my_secure_router";
const char *password = "clear_text_password_is_bad";
void initWifi(){
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(WiFi.status());
Serial.print("*");
}
Serial.print("WiFi connected with IP: ");
Serial.println(WiFi.localIP());
}
在代碼運行時,我無法將代碼推送到 git 存儲庫,因為它包含明文密碼。
是否有任何簡單的選項可以從上述代碼中消除明文密碼?
人們經常通過使用未檢入存儲庫的第二個文件來做到這一點。 他們通常將文件命名為secrets.h
或config.h
。
然后你會改變你的代碼看起來像:
#include "secrets.h"
void initWifi(){
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(WiFi.status());
Serial.print("*");
}
Serial.print("WiFi connected with IP: ");
Serial.println(WiFi.localIP());
}
並將其放入secrets.h
:
#pragma once
#define WIFI_SSID "my_secure_router";
#define WIFI_PASSWORD "clear_text_password_is_bad";
如果包含兩次, #pragma
行將停止處理該文件,這避免了多次定義WIFI_SSID
和WIFI_PASSWORD
的錯誤。
然后將secrets.h
添加到.gitignore
中,這樣git
就不會簽入。
作為獎勵,您可以創建一個secrets.h-example
文件,其中包含存儲在其中的所有秘密的虛擬字符串。
請注意,我將兩個字符串從 C++ 字符數組變量更改為預處理器常量。 在這種情況下,將字符串存儲在變量中並沒有任何好處,而使用預處理器常量可以簡化它們的使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.