Cryptography 为了构建一个高度安全的网站,Ada能比Java/Python更好吗?

Cryptography 为了构建一个高度安全的网站,Ada能比Java/Python更好吗?,cryptography,ada,python-cryptography,Cryptography,Ada,Python Cryptography,我来自网络和操作系统运营,而不是开发背景。我有一些编写Python和PHP代码的经验,并且在大学里学习过软件开发。 作为一个爱好项目(目前),我计划建立一个小型网站,其中将有一个组件来存储PII和敏感信息。我必须首先考虑安全性,其次考虑性能(主要是加密/解密) 我的目标是尽可能地对所有内容进行加密,并使代码尽可能少(默认情况下)被利用。该网站将托管在linux系统上 这个项目的整个想法是深入学习一门语言(尽可能多),我觉得如果我选择一些我喜欢的想法,我会更加专注。这个想法涉及处理PII和其他敏感

我来自网络和操作系统运营,而不是开发背景。我有一些编写Python和PHP代码的经验,并且在大学里学习过软件开发。 作为一个爱好项目(目前),我计划建立一个小型网站,其中将有一个组件来存储PII和敏感信息。我必须首先考虑安全性,其次考虑性能(主要是加密/解密)

我的目标是尽可能地对所有内容进行加密,并使代码尽可能少(默认情况下)被利用。该网站将托管在linux系统上

这个项目的整个想法是深入学习一门语言(尽可能多),我觉得如果我选择一些我喜欢的想法,我会更加专注。这个想法涉及处理PII和其他敏感信息。而且,如果最终产品结果良好,那么我们将打开它,因此在选择编写代码的语言时,我们希望做出一个好的选择

我读了一些书,看到有人提到后端c/c++会很好,因为它提供了良好的性能和灵活性,但安全性并不容易。下一个最佳选择是Ada 2012,因为它比C/C++提供了更多的安全性,而且不会影响性能。Java也可以提供安全性,但速度可能稍慢一些。然后是Python/Ruby

我认为Ada 2012可能是一个不错的选择,但我不想进入这样一个职位,在某种程度上我学习了Ada 2012,然后意识到使用Python、Java或其他语言会更好

我想从专家那里了解这3个具体问题的答案:

哪种语言最适合开发本网站,以便:

  • 是否可以使用最好的加密/解密库
  • 可以利用该语言的功能编写固有的安全代码?
  • 而且,性能越高越好
请告知。另外,如果有人使用Ada开发了网站(特别是那些处理PII的人),请分享您的经验


我知道每种语言都有优点和缺点,我提出这一问题的目的是向那些多年从事网站开发、使用多种语言和框架开发处理敏感数据的网站的人学习。如果MOD认为这个问题会引发一场好语言与坏语言的战争,我道歉,因为这不是我的初衷,我将结束这个问题。

语言的特性可以用来编写本质上安全的代码?Ada的类型系统支持编写在使用前验证数据的代码。这是语言的一个特性,有助于It安全。当然,IT安全性远不止这些。配置防火墙,例如,使用systemd指定操作系统允许同时运行可执行文件的多少个进程,每个进程允许分配多少内存,不同应用程序可以访问哪些目录和权限,等等。我相信在这个简短的回复中,有很多我没有提及也没有涵盖

是否可以使用最好的加密/解密库?就我所知,最好的密码学库是Ada Crypto库:。 但我们需要的是制作一个安全的web应用程序。对于加密安全套接字层(https),据我所知,在任何http服务器实现中都没有使用Ada加密库。如果想在Ada中开发web应用程序,我可以看到三个选项:AdaCore的AWS(Ada web服务器),GNAT编译器的社区版(www.AdaCore.com)中包含了AWS,Dmitry Kazakov的simple components()或GNOGA(www.GNOGA.com)中的http服务器实现这是在Dmitry Kazakov的简单组件上实现的。哦,等等,Matreshka也可以使用,但我还没有使用它,所以我不能评论()

根据AWS的文档,它可以编译为使用OpenSSL、LibreSSL或GNUTLS()

通过简单的组件和GNOGA,安全套接字层实现由GNUTLS提供

向web应用程序提供SSL的另一种选择是使用ApacheWeb服务器作为代理来处理加密(我从未做过这样的设置,只是听说存在这种可能性)

而且,性能越高越好?我喜欢表演,如何获得最好的表演是一个巨大的课题。总的来说,我认为Ada是那些喜欢性能的人很好的编程语言选择。为了最大限度地利用Ada实现性能,我必须:

1) 当使用标准容器和GNAT编译器时,可以使用“pragma Suppress(篡改检查);”来提高应用程序的性能。并不是每个人都同意这种观点,即一个调试版本打开篡改检查,然后一个发布版本关闭检查,因为一个版本以安全换取性能,但它对性能有明显的影响。除了标准容器之外,还可以使用基于Ada特征的容器()。它们可能是世界上设计最完善的Ada编程语言容器

2) 避免在标准库中使用无界_字符串。可以在GNATColl库中使用XString无界字符串实现,这样可以将性能提高10倍。还考虑如果可能的话,在内存池(或子池)中分配普通字符串(我在存储库中的XMLX解析器应用程序中这样做):


编辑:我故意避免争论艾达、java或Python是否更好,而不是专注于,如果你在艾达中做,你需要做什么和考虑。

< P>简短的回答——不,这样的系统是不可能的。PII不那么敏感