我們有一個面向公眾的網路服務器,具有自定義API功能,允許用戶下載與我們開發的網站相關的資料。這只是向用戶提供網站背后的資料的一種選擇,供他們個人使用和json格式。
我的問題與任何錯誤或問題無關,因此。這是一個關于安全的問題,如果我們這樣做是安全的。
我是 CORS 的新手,想知道這樣做是否足夠安全?
builder.Services.AddCors(p =>
p.AddPolicy("corsapp", builder =>
{
builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader();
}));
我們提供的資料非常有限,并且沒有對黑客有價值的個人或可識別資訊。事實上,資料可以來自其他網站的互聯網。
以上是否builder 可以,或者我們是否應該具體說明我們的域 URL,以防黑客通過 API 的默認保護?默認情況下,我的意思是我們不會將任何特定的安全功能編程到我們的 API 中。我剛剛使用 VS2022 構建了它,使用 C# 中用于 API 開發的默認專案模板。
謝謝
更新
請提供有關如何在未經身份驗證CORS的情況下正確設定API 的鏈接或示例。正如我在我的 OP 中所說,我們的 API 不需要身份驗證 - 它只是一個直接的資料轉儲。但是,對于上述情況,我們擔心其他可能的漏洞(如果有的話!) - 或者 CORS 默認情況下是“安全的”?!Builder
uj5u.com熱心網友回復:
在您的用例中,它是安全的(至少對您而言,通常不是),使用CORS,您允許瀏覽器從腳本發起跨域 HTTP 請求。(javascript)但您不需要這個(您的用戶正在從同一個站點下載,并且可能不是使用js)。
什么是 CORS?:(來源):
- 是一個允許服務器放寬同源策略的 W3C 標準。
- 不是安全功能,CORS 放松了安全性。允許 CORS 并不會使 API 更安全。
- 允許服務器明確允許某些跨域請求,同時拒絕其他請求。
如果您的 API 僅用于同一個域(子域算作不同的來源,方案也算作不同的來源(http與https),埠也是如此),那么您不必使用CORS。
默認情況下不允許任何內容,但如果您想提供對其他一些站點的訪問以訪問您的資源(來自不同域),那么您可以允許該站點使用一些選定的方法。(將它們添加為例外 - 您信任的網站)
您還可以在控制器中限制僅允許某些方法(不是全域方法),這樣可以最大限度地減少攻擊面。
注意:在第一次嘗試中,我會禁用 CORS(默認情況下禁用),如果沒有任何問題,您永遠不需要啟用它(如果您需要啟用它,請以最嚴格的方式進行 - 參見上面的源代碼)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515534.html
標籤:C#api安全科尔斯
