Konami Code使用C#和ASP.net

5

你不能在这个ASP.NET页面中使用一些JavaScript代码吗?毕竟它是HTML... - decyclone
我的意思是可以这样做,但我只想在服务器端进行,这样当您查看HTML的源代码时,就无法查看代码 =) - CSharpNoob
在 Stack Overflow 上已经有一个类似的问题了,请查看 - https://dev59.com/BXRB5IYBdhLWcg3w6bYE - Andrew Collins
4个回答

4

那么您的意思是用户在查看源代码时不应该发现您的超级秘密Konami代码?

完全在服务器端做到这一点是不可能的,除非您希望在每次按键时进行回发,这很麻烦。

您可以压缩和混淆JavaScript代码,但我猜一个有决心的用户仍然可以找出来。

您可以使用Silverlight,但同样,一个有决心的用户可以从浏览器缓存中解压XAP并在反编译器中查看您的DLL。

您可以使用AJAX将每个按键发送到服务器(或者可能在客户端收集它们并批量发送),这实际上并不是太慢。在服务器上,您必须分析按键。此代码对用户不可见。然后,您必须模拟某些推送机制以在客户端上触发所需的反应。


3

使用C#没有意义。这样的代码必须在客户端执行,因此必须使用Javascript(除非您希望将每个客户端按键发送到服务器,这将非常缓慢)

无论如何,这是一个WPF的C#实现。但是,将其适应其他技术也不难。

    private static readonly Key[] _konamiCode = new[] { Key.Up, Key.Up, Key.Down, Key.Down, Key.Left, Key.Right, Key.Left, Key.Right, Key.B, Key.A };
    int _konamiCurrentIndex = 0;

    protected override void OnPreviewKeyDown(KeyEventArgs e)
    {
        base.OnPreviewKeyDown(e);
        if (e.Key == _konamiCode[_konamiCurrentIndex])
        {
            _konamiCurrentIndex++;
            if (_konamiCurrentIndex == _konamiCode.Length)
            {
                _konamiCurrentIndex = 0;
                KonamiEasterEgg();
            }
        }
        else
        {
            _konamiCurrentIndex = 0;
        }
    }

    void KonamiEasterEgg()
    {
        // whatever you want to do when the Konami code is entered...
    }

1
我想知道在System.Web命名空间中,KeyEventArgs的等效物是什么。^^ - CSharpNoob

0

正如其他人所说,完全用C#实现它没有太多意义。但我可以想象一种JavaScript + AJAX与C#的组合...只是一些想法 :)

可能的工作流程:使用JavaScript扫描用户输入(最后10个键),并将输入推送到数组中(ASCII代码或其他内容),然后通过AJAX发送请求,该请求将返回整个秘密目标页面作为HTML结果,而不仅仅是检查,因为这很容易破解。实际上,这更像是密码比较。但是,您可以优化JavaScript,并在几秒钟内清除数组,而没有输入(空闲时间)例如2秒钟(以便输入必须流畅),并在1秒钟内没有输入后发送ajax请求,以便您不会淹没自己的服务器。

JQuery会帮助您很多!

愉快的编码:)

  • 此致
    敬礼
    Thomas

0

看到 herzmeister der welten

你可以使用 AJAX 将每个按键发送到服务器(或者在客户端收集它们并批量发送),这实际上并不会非常缓慢。在服务器上,您需要分析按键。此代码对用户不可见。然后,您需要模拟一些推送机制来触发客户端上的所需反应。

触发器可以是您需要作为组合的最后一个按键,用户只能解密最后一个按键,这将提供最少的后续请求而无需进行某些客户端验证。

(本来想发表评论的,但是没有足够的声望)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接