环顾Web服务器端,我发现像PHP这样的脚本语言很受欢迎,
可能是由于开发速度和编程的简易性。 但是脚本语言是人类可读的,因此代码安全性不是问题。
我想知道,如果我热衷于服务器上代码的安全性,那么哪种服务器语言/技术最合适。
答案 0 :(得分:6)
使用任何服务器端语言时,只有能够访问FTP协议(或SSH)的人才能看到这些文件。当您经常浏览网页时,您无法看到PHP或任何其他脚本语言。
就实际的语言安全而言,可以找到很少的错误,但是你会在每种语言中得到它。 脚本的安全性取决于您的设计方式。
在大多数情况下,每种语言都是安全的,但不是每个程序员都是。
答案 1 :(得分:4)
脚本语言是人类可读的 所以代码安全性不是一个 问题在这里。
不,网络上的用户永远不会看到服务器端程序的代码 - 除非您发布源代码。
Web应用程序中的一些安全问题源于服务器端使用的语言类型:缓冲区溢出是C的典型安全问题。因此,脚本语言在这方面实际上更安全。
当今Web应用程序中的典型安全问题源于客户端,服务器,数据库和用户输入数据的交互:
像Ruby on Rails(或许多其他人)这样的现代Web框架将帮助您避免一些这些问题。但你仍然需要学习很多关于网络安全!
“远离Javascript”有点像“远离汽车”,因为它们很危险。 Javascript是现代Web应用程序不可或缺的一部分。
答案 2 :(得分:3)
所有严肃的(忽略Piet,Malbolge等)编程语言都是人类可读的。是否需要显式编译步骤对应用程序安全性没有任何影响。
如果您想要非常小心安全性,请使用支持简单验证和/或校样的语言,例如Haskell或Ada。使用现代动态语言(如Python或Ruby),典型的Web应用程序可能没问题。出于性能原因,Java和C#也很受欢迎。与PHP,Perl / CGI或传统ASP等传统平台相比,任何这些都将使开发安全应用程序变得更加容易。
最后,作为一个小小的烦恼 - PHP,Python,Ruby,Perl等不是脚本语言。
答案 3 :(得分:2)
我想说保护代码的唯一真正安全的方法是使用ISAPI或CGI,并使用一些硬编译语言(如C,C ++,VB 5或更高版本)开发应用程序,但任何.NET,Delphi 5或更高版本等等。无论你做什么,任何字节码或解释语言都可以被解压缩。新的混淆方法可能会让破解者持有一段时间,但他们总能找到获取源的方法。源代码就在那里,反编译例程就在那里,源代码必须被显示为框架使用,所以所有的破解者必须做的就是在途中捕获它。
答案 4 :(得分:1)
语言与它有一小部分关系。然而,很多事情与您实际设计和编写代码的方式有关。
答案 5 :(得分:1)
ASP.NET被编译成dll,因此代码在服务器上不是人类可读的。但即使在PHP中,代码也会在服务器上执行。
远离JavaScript,因为它在客户端上可见,并且是人类可读的。
答案 6 :(得分:1)
我的主要偏好是.NET,但是即使使用像PHP这样的脚本语言,他们也看不到你的原始代码,除非你让人们有权读取原始代码文件。我见过一些非常安全的PHP网站。如果您担心人们可以看到和访问的内容,那么您需要观察您在客户端脚本语言(如Javascript)中添加的内容。
答案 7 :(得分:1)
对于“隐藏”代码,有一些不同的语言支持这一点。可以编译.NET语言,它生成DLL而不包含服务器上的原始源代码。但是,这些可以用.NET Reflector之类的东西来读取,所以为了避免你在代码上运行像Dotfuscator这样的东西,使它更难以阅读。
对于PHP,有一些解决方案,例如ionCube,它们对您的脚本进行编码,并且必须在服务器上使用其他解码器运行它们才能执行它们。通常在转售脚本时使用它,因此客户端无法查看或修改源。