1

环顾 Web 服务器端,我发现像 PHP 这样的脚本语言非常流行,

可能是由于开发速度和易于编程。然而,脚本语言是人类可读的,因此代码安全不是这里的问题。

我想知道,如果我热衷于服务器上代码的安全性,哪种服务器语言/技术最适合。

4

8 回答 8

6

当您使用任何服务器端语言时,只有有权访问 FTP 协议(​​或 SSH)的人才能看到这些文件。当您经常浏览网页时,您看不到 PHP 或任何其他脚本语言。


就实际的语言安全性而言,可以发现一些小错误,但您会在每种语言中找到它。脚本的安全性取决于您如何设计它。

在大多数情况下,每种语言都是安全的,但并非每个程序员都是安全的。

于 2009-08-14T18:14:57.897 回答
4

脚本语言是人类可读的,因此代码安全性不是这里的问题。

不,网络上的用户永远不会看到您的服务器端程序的代码 - 除非您发布源代码。

Web 应用程序中的一些安全问题源于服务器端使用的语言类型:缓冲区溢出是 C 的典型安全问题。因此,脚本语言在这方面实际上会更安全。

当今 Web 应用程序中的典型安全问题源于客户端、服务器、数据库和用户输入数据的交互:

像 Ruby on Rails(或许多其他)这样的现代 Web 框架将帮助您避免其中一些问题。但是你仍然需要学习很多关于网络安全的知识!

“远离 Javascript”有点像“远离汽车”,因为它们很危险。Javascript 是现代 Web 应用程序不可或缺的一部分。

于 2009-08-14T18:21:54.340 回答
3

所有严肃的(忽略 Piet、Malbolge 等)编程语言都是人类可读的。是否需要显式编译步骤对应用程序安全性没有任何影响。

如果您想非常注意安全性,请使用支持简单验证和/或证明的语言,例如 Haskell 或 Ada。使用现代动态语言(例如 Python 或 Ruby)可能会适合典型的 Web 应用程序。出于性能原因,Java 和 C# 也很流行。任何这些都将使开发安全应用程序比在 PHP、Perl/CGI 或经典 ASP 等传统平台上更容易。

最后,作为一个小烦恼——PHP、Python、Ruby、Perl 等不是脚本语言。

于 2009-08-14T18:18:21.913 回答
2

我想说保护您的代码的唯一真正安全的方法是使用 ISAPI 或 CGI,并使用一些硬编译语言(如 C、C++、VB 5 或更高版本,但任何 .NET、Delphi 5 或更高版本等)开发应用程序. 无论您做什么,都可以对任何字节码或解释语言进行反编译。新的混淆方法可能会阻止破解者一段时间,但他们总能找到获取源代码的方法。源码在那儿,反编译例程就在那儿,源码必须暴露给框架使用,所以破解者只需要中途抓到。

于 2009-08-15T22:53:23.193 回答
1

语言与它有一小部分关系。但是,与您实际设计和编写代码的方式有很大关系。

于 2009-08-14T18:14:49.003 回答
1

ASP.NET 被编译成 dll,因此代码在服务器上不是人类可读的。但即使在 PHP 中,代码也会在服务器上执行。

只需远离 JavaScript,因为它在客户端上是可见的,并且是人类可读的。

于 2009-08-14T18:17:35.630 回答
1

我的主要偏好是 .NET,但是即使使用 PHP 之类的脚本语言,他们也看不到您的原始代码,除非您授予人们阅读原始代码文件的权限。我见过一些非常安全的 PHP 站点。如果您担心人们可以看到和访问什么,那么您需要注意您在客户端脚本语言(如 Javascript)中添加了什么。

于 2009-08-14T18:17:44.490 回答
1

对于“隐藏”代码,有几种不同的语言支持这一点。.NET 语言可以编译,生成的 DLL 不包含服务器上的原始源代码。但是,可以使用 .NET Reflector 之类的东西来读取这些内容,因此要避免在代码上运行 Dotfuscator 之类的东西,从而使其更难阅读。

对于 PHP,有诸如 ionCube 之类的解决方案可以对您的脚本进行编码,并且必须在服务器上使用额外的解码器来运行它们才能执行它们。通常这在转售脚本时使用,因此客户无法查看或修改源代码。

于 2009-08-14T19:16:03.593 回答