web-dev-qa-db-ja.com

ログオントリガーに対してカスタムエラーを返すことはできますか?

ログオントリガーを取得してカスタムエラーを返そうとしています。これまでのところ、私が試したすべてのことが標準エラーを返します:

enter image description here

私のトリガーは次のようになります:

CREATE TRIGGER Test_Logon_Trigger
ON ALL SERVER 
FOR LOGON
AS
BEGIN

IF ORIGINAL_LOGIN()= 'login_test' 
    BEGIN
        raiserror('Custom Error',25,16) 
        --PRINT 'Print'
        --ROLLBACK;
    END
END;

エラーメッセージを印刷し、RAISERRORコマンドを個別に、または組み合わせて使用​​してみました。また、RAISERRORでWITH NOWAIT句を使用してみました。いずれの場合も、メッセージをエラーログに送信するだけです。画面に表示されて返されたエラーを修正する方法を知っている人はいますか?必要に応じて、2番目のエラーを返すこともできます。

4
Kenneth Fisher

この動作は、ハッキングをより困難にするセキュリティ機能です。具体的には理由入力によって出力に変化はありません。 (ログオントリガーがアクティブであるという事実を明らかにすることは別として。)

パスワードを誤って入力すると、システムは「パスワードが間違っています」というエラーや、指定されたログイン名が存在するかどうかにさえ応答しません。理由を教えてくれれば、当て推量が少ないため、システムへの侵入がはるかに簡単になります。

ですから、組み込みを使用してこれを行う方法があれば、バグとして報告することをためらうことはありません。

もちろん、これはあなたがしようとしていることを解決するものではありません。IMOは、同じ理由で疑わしいものです。

ログインの失敗はめったにないはずなので、すべての制限は予測可能な場所(SharePointなど)で内部的に公開することをお勧めします。これの主なことは、リストが最新の状態に保たれていることを確認することです(データ駆動型である可能性があります)。また、サーバーにアクセスできるすべての人が(すべての人がアクセスできるのではなく)目に見えることを確認します- attemptサーバーに接続します。これは非常に異なります)。

3
Jon Seigel