security - 偏执态度: What's your degree about web security concerns?

标签 security web-applications

这个问题可能与主观问题相关,但这并不是一个真正的问题。

当你开发网站时,有几点你必须了解:XSS攻击、SQL注入(inject)等。 确保所有潜在攻击的安全可能非常非常困难(并且需要很长时间进行编码)。

我总是尝试保护我的应用程序,但我不知道何时停止。

让我们举同样的例子:像 Facebook 这样的社交网络。 (因为银行网站必须保护其所有数据。)

我看到了一些方法:

  1. 不要保护 XSS、SQL 注入(inject)......当您信任您的用户时,这可以真正做到:私营企业的后端。但是您能保护此类应用程序的安全吗?

  2. 仅当用户尝试访问非拥有数据时才进行安全攻击:这对我来说是最好的方法。

  3. 保护所有、所有、所有:您保护所有数据(所有者与否):用户无法破坏自己的数据和其他用户数据:这件事的时间很长,而且非常有用吗?

  4. 保护常见攻击,但不保护非常困难的攻击(因为与被黑客攻击的可能性相比,编码时间太长)。

嗯,我真的不知道该怎么做...对我来说,我尝试做 1、2、4,但我不知道这是否是一个很好的选择。

不保护所有数据是否存在可接受的风险?我可以保护所有数据,但需要花费双倍的时间来编码吗?企业在风险和“时间就是金钱”之间的处理方法是什么?

感谢您分享这一点,因为我认为很多开发人员不知道什么是好的限制。

编辑:我看到很多回复都在谈论 XSS 和 SQL 注入(inject),但这并不是唯一需要注意的事情。

我们来开个论坛吧。可以在我们担任版主的论坛中撰写主题。因此,当您将数据发送到客户端 View 时,您可以添加或删除该论坛的“添加”按钮。但是,当用户尝试在服务器端保存线程时,您必须检查用户是否有权点它(您不能信任客户端 View 安全性)。

这是一个非常简单的示例,但在我的一些应用程序中,我有一个权限层次结构,这可能非常难以检查(需要大量 SQL 查询...),但另一方面,它是真的很难找到黑客(数据在客户端 View 中是伪加密的,需要修改很多数据才能使黑客运行,并且黑客需要很好地理解我的应用程序规则才能进行黑客攻击):在这种情况下,我可以只检查表面安全漏洞(非常容易破解)还是可以检查非常困难的安全漏洞(但这会降低我对所有用户的性能,并且需要我很长时间来开发)。

第二个问题是:我们能否在客户端 View 上“信任”(不开发会降低性能的硬而长的代码)以进行非常困难的黑客攻击?

这是另一篇讨论此类黑客的文章:(休眠和集合检查)Security question: how to secure Hibernate collections coming back from client to server?

最佳答案

我认为您应该尽力保护一切安全,与修复某人利用您留下的漏洞所造成的困惑所需的时间相比,这样做所花费的时间根本不算什么。

无论如何,大多数事情都很容易解决:

  • sql 注入(inject)实际上与 sql 无关,它只是字符串操作,所以如果您对此感到不舒服,只需使用带有绑定(bind)参数的准备好的语句,然后忘记这个问题
  • 通过在将其作为输出发送之前转义(使用 htmlentities 等)每个不受信任的数据,可以轻松消除跨站点攻击 - 当然,这应该与广泛的数据过滤相结合,但这是一个好的开始
  • 凭证盗窃:永远不要存储可以提供对 protected 区域的永久访问的数据 - 而是在 cookie 中保存用户名的哈希版本并为 session 设置时间限制:这样攻击者可能会窃取此信息数据将具有有限的访问权限,而不是永久的
  • 永远不要认为用户登录后就可以被信任——将安全规则应用于每个人
  • 将从外部获取的所有内容都视为潜在危险:即使是您从中获取数据的受信任站点也可能会受到损害,并且您也不想陷入困境 - 即使您自己的数据库也可能会受到损害(尤其是当您在共享环境中)所以也不要信任其数据

当然还有更多,例如 session 劫持攻击,但这些是您应该首先考虑的事情。

编辑有关您的编辑:

我不确定我是否完全理解您的示例,尤其是您所说的“信任客户端安全”的含义。当然,所有具有受限访问权限的页面都必须首先检查用户是否有权查看内容,以及(可选)他(或她)是否具有正确的权限级别:可以有一些操作可供所有用户使用,而另一些操作则可供所有用户使用。其他的仅适用于更受限制的群体(例如论坛中的版主)。所有这些控制都必须在服务器端完成,因为您永远无法信任客户端发送给您的内容,无论是通过 GET、POST 甚至 COOKIES 发送的数据。这些都不是可选的。

关于security - 偏执态度: What's your degree about web security concerns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175636/

相关文章:

c# - 如何使用 Google+ API 将人员添加到 Google+ 中的圈子?

xml - 在 tomcat webapp 中动态设置上下文参数?

css - MVC 最佳实践,响应式设计或动态提供不同的 html

java - 如何保持为用户提供的下载网址在一分钟内有效,一旦时间过去,网络应用程序应重定向到错误页面

java - Bootstrap 字形在 java webapp 中不起作用

php - 身份验证系统是否需要 ssl?

security - 保护/隐藏 Swagger/OpenAPI 规范文档是否合适?

asp.net - 如何防止用户更改asp.net sessionid cookie

python - 对称整数到整数加密

security - 使用公钥和私钥的 SSH 通信