Questions tagged «security»

有关密码和IT安全的问题。这可以是计算机,网络或数据库的安全性。

1
在创建帐户期间,最好自动生成密码并将其发送给用户,还是让用户创建自己的密码?
今天,在与一位同事讨论我们正在研究的网站的“创建帐户”页面时出现了这个问题。 我同事的意见是,我们应该使注册尽可能快速和无缝,因此,我们只需要向用户询问他的电子邮件,然后剩下的就好了。 我同意这个意图,但是对此有一些担忧: 由于我们生成了密码,因此我们有责任确保密码足够安全 以我的经验,当遇到难以理解的密码时,用户可能会将其写下来 没有写下密码的用户很可能会忘记它。这意味着他们必须定期要求输入新密码,这对任何人都不好玩 但是,考虑到用户创建的密码的一般质量,以及太多的人倾向于对所有事物使用相同的密码(“发声者”)的事实,我可以看到为他们生成强密码的意义。 我仍然为此感到痛苦。我们正在商人网站上工作,用户可以选择保存其信用卡详细信息,因此使用最安全的方法显然非常重要。

3
Web服务之前,桌面应用程序如何与远程服务器通信?
我对桌面应用程序没有太多的经验,但是如果必须创建客户端服务器桌面应用程序,则可以通过Web服务来进行数据访问。我相信通过Web服务进行的数据访问可提供安全性-我不需要传递数据库服务器的用户名和密码等。 在使用Web服务之前,数据库应用程序是如何做到这一点的?是否已将所有重要的数据库信息传递到桌面应用程序的安装中?如果是这样,程序员如何管理安全性方面?还是程序员使用类似于Web服务的内容?

3
将机密数据安全地存储在客户端Web应用程序中
我有这个Web应用程序,它将成为所有客户端技术(HTML,CSS,JavaScript / AngularJS等)。该Web应用程序将与REST API进行交互,以访问和修改数据。目前,尚不确定REST API将使用哪种类型的身份验证系统。 据我了解,任何类型的API身份验证系统(API密钥,OAuth 1/2等)都将具有某些需要保密的数据,否则可能会损害访问权限。对于API密钥,它们本身的密钥需要保密,对于OAuth 2,客户端秘密/访问令牌/刷新令牌需要保密,我确定OAuth 1涉及的4个密钥中的一些必须保密(不是OAuth 1的经验过多)。我一直在尝试思考是否有一种方法可以将这种秘密内容存储在纯客户端Web应用程序中,而无需在服务器端进行中间层排序。 我一直在尝试考虑这个问题,而我想不起任何地方可以这样做。我的意思是我无法将其存储在javascript中,因为任何人都只能查看源代码或打开控制台并获取数据。我不确定100%localStorage的安全性以及用户是否可以访问/修改该数据。即使本地存储是安全的,我想到的将数据放入其中的两种方法也不是。一种方法是仅将数据存储在javascript源代码中,这是我能想到的最不安全的事情。现在,如果我使用的是OAuth 2之类的东西,其余的api本身会给我令牌,那仍然不是那么安全(比第一个选项好),因为这些令牌将以纯文本形式返回,任何人都可以看到计算机正在查看的请求。 有没有办法让完全运行客户端的应用程序能够安全地存储秘密数据,而无需在服务器端设置某种中间层?

10
安全限制是否应导致服务返回null或引发异常?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我在这个问题上与经验丰富的开发人员有些分歧,想知道其他人对此有何看法?我们的环境是Java,EJB 3,服务等。 我编写的代码调用服务来获取事物和创建事物。我遇到的问题是我得到了没有意义的空指针异常。例如,当我要求服务创建一个对象时,我得到空值。当我尝试查找具有已知有效ID的对象时,返回空值。我花了一些时间试图弄清楚代码中的错误。因为我经验不足,所以我通常以为我做错了什么,但是事实证明,返回null的原因是安全性。如果使用我的服务的用户主体对目标服务没有正确的权限,则它仅返回null。这里大多数其他服务的记录也不太好,因此显然这只是您必须了解的内容。 当开发人员编写与服务交互的代码时,这相当令人困惑。如果服务有一个异常,该异常将告诉我用户没有适当的权限来加载此事物或创建该事物,这对我而言将更为有意义。然后,我会立即知道为什么我的服务无法按预期工作。 编写该服务的经验更丰富的开发人员认为,索要数据不是错误条件,并且仅应在错误条件下引发异常,而不是在用户无法访问数据时抛出异常。通常会在GUI中查找这些数据,对于没有正确权限的用户,这些事情简直“不存在”。简而言之:问是没有错的,因此也不例外。Get方法返回null,因为对那些用户来说那些“不存在”的东西。当不允许用户创建东西时,Create方法返回null。 这是正常的和/或良好的做法吗?我更喜欢使用异常,因为我发现更容易知道发生了什么。因此,例如,如果您请求一个具有无效ID的对象,则我宁愿抛出NotFoundException,而不是返回null。

7
哪些信息绝对不能出现在日志中?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我将要编写公司准则,以指导日志中绝不能出现的内容(应用程序的痕迹)。实际上,一些开发人员试图尽可能多地包含尽可能多的信息,这使得存储这些日志很冒险,并且提交它们非常危险,尤其是当客户不知道该信息是否存储时,因为她从不关心此信息。切勿阅读文档和/或警告消息。 例如,在处理文件时,一些开发人员很想跟踪文件名。例如,在将文件名附加到目录之前,如果我们跟踪所有错误内容,则很容易注意到例如附加名太长,并且代码中的错误是忘记检查代码的长度。串联字符串。这很有用,但这是敏感数据,绝不能出现在log中。 以相同的方式: 密码, IP地址和网络信息(MAC地址,主机名等)¹, 数据库访问 来自用户的直接输入和存储的业务数据 绝对不能出现。 那么,必须从日志中清除其他哪些类型的信息?有没有已经写好的指南可以使用? ¹显然,我不是在谈论IIS或Apache日志。我所说的是收集信息的唯一目的是调试应用程序本身,而不是跟踪不可信实体的活动。 编辑:谢谢您的回答和评论。由于我的问题不太精确,因此我将尝试回答评论中提出的问题: 我在处理日志吗? 应用程序的日志可能存储在内存中,这意味着可以将其存储在本地主机的硬盘中,数据库中,也可以存储在Windows事件中。在每种情况下,都担心这些来源可能不够安全。例如,当客户运行一个应用程序并且该应用程序将日志存储在temp目录的纯文本文件中时,任何对PC有物理访问权限的人都可以读取这些日志。 该应用程序的日志也可以通过互联网发送。例如,如果客户对应用程序有疑问,我们可以要求她以全跟踪模式运行该应用程序并向我们发送日志文件。此外,某些应用程序可能会自动将崩溃报告发送给我们(即使存在有关敏感数据的警告,在大多数情况下,客户也不会阅读这些警告)。 我是在谈论特定领域吗? 否。我仅在一般业务应用程序上工作,因此唯一敏感的数据是业务数据。没有任何与健康或特定法规涵盖的其他领域相关的内容。但是,谢谢您谈论这个问题,我可能应该看看这些领域,以获取一些有关我可以在指南中包括的内容的线索。 加密数据难道不是很容易吗? 不会。这会使每个应用程序变得更加困难,特别是如果我们要使用C#诊断程序和TraceSource。它还需要管理授权,这不是最简单的想法。最后,如果我们谈论的是客户提交给我们的日志,则我们必须能够读取日志,但不能访问敏感数据。因此,从技术上讲,从不将敏感信息完全不包含在日志中,并且永远不在乎这些日志的存储方式和位置会更容易。

5
允许管理员用户以其他用户身份登录
您是否认为实施允许管理员用户绕过密码以其他用户身份登录的一种好习惯?这可以通过主密码或用户管理内的功能“以该用户身份登录”来实现。 例如,管理员正在要求一种这样的功能,以便能够尝试重现所报告的问题或检查授予是否正常。

2
从Websocket客户端发送时是否真的需要屏蔽
当前的Websocket RFC要求Websocket 客户端在发送时屏蔽帧内的所有数据(但不需要服务器)。以此方式设计协议的原因是为了防止客户端和服务器之间的恶意服务(代理等)更改帧数据。但是,此类服务仍然知道屏蔽密钥(在每个帧的开头按帧发送) 我是否以为这样的服务仍然可以使用该密钥来取消遮罩,更改内容,然后在将帧传递到下一个点之前重新遮罩内容呢?如果我没看错,这将如何修复假定的漏洞?


5
针对软件漏洞的攻击/工具的软件生命周期的独特之处是什么?
在我当地的大学中,有一个约20名学生的小型学生计算俱乐部。该俱乐部有几个小组,专门负责特定领域,例如移动开发,机器人技术,游戏开发以及黑客/安全性。 我正在向几个团队介绍一些基本的敏捷开发概念,例如用户故事,估计任务的复杂性以及持续集成以进行版本控制和自动构建/测试。 我熟悉一些基本的开发生命周期,例如瀑布,螺旋,RUP,敏捷等,但是我想知道是否存在诸如用于黑客入侵/破坏安全性的软件开发生命周期之类的东西。当然,黑客正在编写计算机代码,但是该代码的生命周期是什么?我认为他们不会太在意维护,因为一旦发现并修补了漏洞,利用该漏洞的代码就没有用了。 我认为生命周期将是这样的: 找出安全漏洞 利用安全漏洞 采购有效载荷 利用有效载荷 当产品的目的是破坏安全性时,软件的开发生命周期会有什么样的差异(如果有)?

3
OAuth2流程-服务器是否可以通过Auth服务器进行验证?
我已经阅读了很多有关OAuth2的文章,试图弄清楚它,但是我仍然对某些事情感到困惑。 我了解到客户端已向OAuth提供者(例如Google)授权,并允许资源服务器访问用户的个人资料数据。然后,客户端可以将访问令牌发送到资源服务器,并获得资源。 但是,在任何文档中似乎都没有涵盖的内容是,当客户端应用向资源服务器请求资源并向其传递访问令牌时,会发生什么。到目前为止,我阅读的所有内容都指出资源服务器只是以请求的资源作为响应。 但这似乎是一个巨大的漏洞,资源服务器肯定必须以某种方式验证访问令牌,否则我可以伪造任何旧请求并传递旧的,被盗的,伪造的或随机生成的令牌,它只会接受它。 谁能指出我对OAuth2的简单理解,因为到目前为止,我阅读的内容仍不完整。
10 security  oauth2 

2
三连击安全性的弱点
我一直在阅读有关安全性的一些文献,特别是密码安全性/加密,而且我一直想知道一件事:三击规则是密码安全性的完美解决方案吗?也就是说,如果将密码尝试的次数限制为一小部分,之后将不接受所有身份验证请求,那是否不能保护用户免受入侵?我意识到获得对某些内容的访问权或控制权并不总是意味着要通过身份验证系统,但是此功能是否会使字典/蛮力攻击过时?有什么我想念的吗?
10 security 

2
如何防止程序员捕获用户输入的数据?
我正在开发一个非常注重安全性的Web应用程序。可以采取什么措施来防止那些在应用程序上工作的人员(程序员,DBA,质量保证人员)捕获用户输入的值,这些值应该得到很好的保护,例如密码,社会保险号等?
10 security 

4
开发人员可以从研究恶意软件中学到什么吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 恶意软件使用有趣的技术对反恶意软件等隐藏自己。他们可以自己“实现多态”:实际上是在更改代码的同时,它对执行机器的含义仍然几乎相同,从而使防病毒定义无效等。 我想知道是否有(非恶意)开发人员可以从研究此类源中学习到任何东西,或者在没有可用源的情况下将它们逆转并研究从该过程中得到的任何东西,这在此之外是否有用(黑暗?)领域。 我对编写恶意软件不感兴趣。(至少不是出于非教育目的)这个问题并不意味着有关如何编写恶意软件等问题,而是您可以从已经编写的恶意软件中学到什么。 另外,也许有点不道德(我希望不是),编写自己的恶意软件有什么好处,只是为了更好地了解漏洞/漏洞/安全性或底层操作系统?

3
安全公司的程序员做什么?
我听说过咨询客户系统安全性的安全公司。我在该领域认识的所有人都是网络工程师,但我知道程序员也参与安全性工作。执行审核/咨询的安全程序员实际上做什么?他们是否从字面上浏览代码库,以查找人们的遗留系统中的每个漏洞?我一直以为这是他们的所作所为,但似乎这将是非常不可靠的,并且除了提供错误的安全感外,不会做太多其他事情。注意:我不是在谈论编写加密算法或类似方法的程序员,而只是在乎软件安全审核/咨询的程序员。

2
如何避免未经授权使用API​​?
我必须设计一个“小部件”,一个脚本,合作伙伴将其嵌入到他们的网站中以显示一些UI并调用我们的API。 基本上,它将根据API调用中提供的一些ID在这些网站上显示我们的数据。我们要避免的是有人滥用API并使用它来刮擦我们的整个目录。 嵌入脚本的每个合作伙伴都将获得一个公开密钥,在调用API时必须提供该公开密钥。一个想法是让他们在加载脚本时附加此密钥,例如: <script src="//initrode.com/widget/loader.js?key=xxxx"></script> 这样,对脚本的请求可用于注册密钥/源IP对,并仅在密钥/ IP对与已注册的密钥/源IP对匹配(生命周期有限且每天的请求受到限制)时才应答后续的API调用。 我不确定这是个好主意,因为通过混淆显然是安全的(有人重新加载脚本会完全绕过它);但我没有其他限制访问的方法。我不能为每个用户提供唯一的密钥,只能给合作伙伴提供。我不能使用私钥系统,因为任何人都可以使用所有代码。它基本上是限制对公共API的访问,即在定义上是矛盾的。 您如何看待该解决方案,您将如何应对这些约束?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.