簡體   English   中英

保護Web方法

[英]Securing a Web Method

假設我在c#MVC中有一個方法來發送帶有ajax的電子郵件,例如:

public class mailController : Controller {

        SmtpClient mailserver = new SmtpClient("smtp.foo.com");

        public string send(string from, string to, string subject = "", string body = "", string cc = "", string bcc = "") {
            MailMessage message = new MailMessage(from, to, subject, body);
            if (cc.Length > 0) {
                message.CC.Add(cc);
            }
            if (bcc.Length > 0) {
                message.Bcc.Add(bcc);
            }
            mailserver.Send(message);
            return "MessageSent";
        }
    }

有什么辦法可以讓它更安全嗎? 我的意思是,現在任何人都可以在地址欄中輸入相關信息。 http://www.foo.com/mail/send?from=etc如果我想用它來表單提交,我無法用密碼保護它,或者我必須在javascript中使用它,這很容易找到。 我考慮過設置一個cookie並將其用作身份驗證,但這只是到目前為止。 是否有保護ajax方法的標准程序?

您需要在服務器上驗證參數是否符合您的要求。

您需要實現安全會話令牌,以防止未經授權的用戶(沒有有效會話的用戶)發送電子郵件。 這與任何其他跨站點請求偽造(CSRF)攻擊向量基本沒有區別。 如果您需要任何其他信息,只需使用Google的“CSRF保護ASP.NET”或類似內容,以獲得更具體的示例,了解如何執行此操作。

您的要求聽起來互相排斥。

如果您確實希望將其公開,但您不希望它被濫用,那么也許您可以提供某種限制,只允許來自特定IP地址的x個請求。

您還可以在HTMLform中使用mailto:來提示客戶端發送電子郵件。

首先,您可以隨時存儲訪問您的控制器的IP,如果相同的IP嘗試以您定義的特定頻率發送郵件,您可以阻止它阻止它...第二,您可以在郵件中生成隨機數將發送給控制器的頁面 - >這將允許您驗證郵件是從您的站點發送的,而不是從第三方發送的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM