网站黑客 - 为什么总是可以做到?

Nar*_*rek 17 security webserver

我们知道每个可执行文件都可以进行逆向工程(反汇编,反编译).无论如何强大的安全性,无论如何,如果破解者想要,他们确实破解!这只是一个时间问题.

网站怎么样?我们可以说网站可以完全免受黑客的攻击(我们假设主机不容易受到攻击)吗?如果没有,那是什么原因?

mez*_*oid 31

是的,总是可以这样做.总有一种方式.

这就像我的祖父总是说:

锁是为了保持诚实的人

  • 我在(恕我直言)更好的变体中听到过这句话:"锁是为了让诚实的人保持诚实". (5认同)

bca*_*cat 26

我们可以说网站可以完全免受黑客攻击吗?

没有.一方面,即使是世界上最安全的技术也容易受到社会工程攻击.

  • 没有什么是完全安全的,甚至没有2英尺厚的钢门. (3认同)
  • 不,不.充其量,您可以很难找到硬件.你永远不可能让它变得不可能. (2认同)

L̲̳*_*̲̳̳ 9

您可以轻松地写在数学上被证明是安全的web应用程序.但是,举证将只持有,只要底层操作系统,解释|编译器和硬件的安全,这是从来没有的情况.

  • "在数学上被证明是安全的"是什么意思? (4认同)
  • @Longpoke:我很佩服你的乐观.最近有一个突破,一个团队设法证明微内核是安全的; 几个人花了几年的时间来处理几千行代码.证明Web服务器是安全的将是非常困难的.通过经过验证的安全Web服务器,您可以证明您的网页服务是安全的 - 但之前并非如此. (4认同)
  • 如同,在人类可以理解的任何领域都没有办法妥协它.也许我应该改写并说"正式证明".例如:我创建了一个带有两个参数x和y的页面,并且预期的行为是,如果x = y,则返回0,否则1.如果该页面的代码与预期完全一致,则可正式证明该页面的代码可以正常工作可能做任何事情(在编程语言的上下文中). (3认同)

Bri*_*sen 5

要记住的关键是网站通常是庞大而复杂的系统的一部分,如果黑客通过Web应用程序本身或整个基础架构的其他部分进入系统并不重要.如果有人可以访问您的服务器,路由器,DNS或其他任何东西,他们甚至可以降低最好的Web应用程序.根据我的经验,很多系统都以某种方式易受攻击.因此,"完全安全"意味着"我们正在努力确保平台的安全"或"我们毫无线索,但我们希望一切都好".我见过两者.

  • 如果您的机密性依赖于传输层......您的网站从一开始就不安全. (3认同)

bet*_*hmi 5

总结并添加到之前的帖子:

  1. Web作为共享资源 - 只要可访问网站,网站就很有用.渲染网站无法访问,你已经打破了它.拒绝服务攻击加剧了服务器的泛滥,因此它无法再响应合法请求将始终是一个因素.这是一个远离的游戏 - 大型服务器站点找到分发方式,黑客找到方法来消除.
  2. 动态数据=动态风险 - 如果用户可以输入数据,则黑客有可能成为一个补缺.今天,最重要的概念是跨站点脚本和SQL注入,但是一旦解决了一条破解途径,另一种机制将会上升的可能性很高.可以想象,你可以认为一个完全静态的网站可以保证这一点,但是有多少有用的网站符合这个要求呢?
  3. 复杂性 =更复杂,更难保护 - 鉴于技术的快速变化,我怀疑任何网络开发人员都可以100%自信地说现代网站是安全的 - 有太多未知的代码.将主机放在一边(服务器,网络协议,操作系统,可能还有数据库),Java EE和.Net中仍然存在所有优秀的新库.即使是较少的企业架构也会有一些严重的复杂性,这使得了解代码的所有潜在输入和输出都非常困难.
  4. 身份验证问题 =根据定义,该网站允许远程用户在远离的服务器上执行有用的操作.了解和信任通信的另一端是一个古老的挑战.这些天服务器端验证相对较好实现了解和(据我所知!)没有人设法破解PKI.但是,解决用户身份验证仍然非常棘手.这是可行的,但它是用户和配置难度与漏洞风险较高的系统之间的权衡.当用户不遵守规则或发生事故时,即使是强大的系统也可能被打破.如果您想为所有用户创建公共站点,则所有这些都不适用,但这严重限制了您将能够实现的功能.

我要说网站只是改变了客户端代码挑战的安全挑战的本质.开发人员不需要担心代码复制,但开发人员确实需要了解集中数据和访问服务器(或服务器集合)所带来的风险.这只是一个不同的问题.