Questions tagged «security»

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

4
甚至值得检查一下Guid.NewGuid()是否为Guid.Empty吗?
在其中一个项目中,我经常遵循以下模式进行工作: var guid = Guid.NewGuid().ToString(); while (guid == Guid.Empty.ToString()) { guid = Guid.NewGuid().ToString(); } 虽然我知道不能保证 GUID是唯一的,并且根据MSDN文档,生成的GUID可能为零,但这是否是一个实际的考虑因素,实际上值得在计算意义上以及针对开发人员的角度进行周期测试?
28 .net  security 

5
PHP登录脚本应采用哪些最佳实践?
我想为客户网站重新编写我的登录脚本,以使其更加安全。我想知道我可以在其中实施哪些最佳实践。受密码保护的控制面板数量众多,但是似乎很少有人在代码编写,速度和安全性方面暗示最佳实践。 我将使用PHP和MYSQL数据库。 我曾经使用md5,但我发现sha256或sha512会更好(以及安全的哈希和盐)。 一些登录脚本会在整个会话甚至用户代理中记录IP地址,但是我想避免这种情况,因为它与代理服务器不兼容。 我在使用PHP 5中的会话的最佳实践(最后一次阅读的是PHP 4)方面也落后了一些,因此一些最佳实践可能会有所帮助。 谢谢。

5
是否可以通过分配系统上的所有空白空间来从另一个程序读取内存?
从理论上讲,如果我要构建一个程序来分配系统上所有未使用的内存,并继续请求越来越多的内存,因为其他应用程序释放了它们不再需要的内存,则可以从另一个应用程序读取最近释放的内存?还是受到现代操作系统的某种保护? 我对此没有实际应用,我只是很好奇。我意识到现实生活中分配“所有可用内存”存在一些问题。 编辑:为澄清起见,我专门询问“已释放”内存,而不访问其他应用程序当前分配的内存。

4
Web API身份验证技术
我们有一个asp.net MVC Web服务框架,用于为人们获取请求提供xml / json,但正在努力找出验证用户的最佳方法(对于使用javascript或OO语言进行编码的用户而言,快速,简便,琐碎)。这并不是说我们的数据是敏感数据或任何东西,我们只是希望用户注册,以便我们可以使用其电子邮件地址来通知他们更改和跟踪使用情况。 在我们先前的尝试中,我们在URI中使用了用户名,并且只需确保存在用户名并使用使用率来递增db表。这是超级基础,但我们会注意到人们使用demo作为用户名等,因此我们需要使其更加复杂。 有哪些身份验证技术可用?主要参与者使用/做什么。
26 security  api  web  services  rest 

5
Web服务器如何执行同源策略?
我正在更深入地开发RESTful API,到目前为止,已经与一些不同的框架合作来实现这一目标。当然,我遇到了同源策略,现在我想知道Web服务器(而不是Web浏览器)如何实施它。据我了解,浏览器端似乎发生了一些强制执行(例如,遵守从服务器收到的Access-Control-Allow-Origin标头)。但是服务器呢? 例如,假设一个Web服务器托管了一个访问API的Javascript Web应用程序,该API也托管在该服务器上。我假设服务器将执行同源策略---以便仅允许该服务器上托管的javascript访问API。这样可以防止其他人为该API编写JavaScript客户端并将其托管在另一个网站上,对吗?那么,Web服务器如何能够阻止恶意客户端,该客户端试图声称对其API端点发出AJAX请求,同时声称正在运行源自同一Web服务器的javascript?最受欢迎的服务器(Apache,nginx)如何防御这种攻击?还是我对此的理解不合时宜? 还是跨域策略仅在客户端实施?

11
如果我的雇主要求我写不安全的代码,我应该接受吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我的雇主要求我实现一项功能,该功能要求将密码以明文形式存储在数据库中(或使用存储在二进制文件中的晦涩的加密/解密功能,这会更好,但也不安全)。 我回答说,我愿意实施这样的功能,前提是客户在使用该功能时已意识到其安全隐患。 在与同事讨论此问题时,有人告诉我,作为软件工程师,我们对产品中引入的安全问题负有法律责任(从法律角度而言)。我查看了我的合同,但没有发现与类似案件有关的任何内容。 从法律的角度来看,我应该拒绝实施这种功能吗?如果客户由于此功能而遭受损害,即使他也意识到安全问题,我的雇主是否可以将我告上法庭? 编辑:我知道这个问题只能由律师可靠地回答。许可问题也是如此:这里的人们有时会在咨询律师后给出他们的理解和经验,但不能保证它也适用于其他司法管辖区。但是,此处明确同意许可为主题,请参阅我在这里可以问什么样的问题?。我相信其他程序员可能也会遇到同样的问题,而其他程序员以前可能也遇到过这种情况,因此可能已经咨询了律师。
24 security  legal 

5
如何实施安全的密码历史记录
出于明显的安全原因,不应以纯文本形式存储密码:您必须存储散列,并且还应谨慎生成散列,以避免彩虹表攻击。 但是,通常您需要存储最后的n个密码,并在不同密码之间进行最小的复杂度和最小的更改(以防止用户使用诸​​如Password_1,Password_2,...,Password_ n之类的序列)。使用纯文本密码将是微不足道的,但是如何仅存储散列呢? 换句话说:如何实现安全的密码历史记录机制?

7
混淆/混淆面向公众的数据库ID真的是“最佳实践”吗?
我听说人们在互联网上到处都是演讲,这是使Web应用程序中面向公众的数据库ID晦涩难懂的最佳实践。我想它们主要是形式和网址的意思,但是我从没读过太多关于这个主题的文章。 编辑:当然,现在我问这个问题,我发现了一些有关该主题的资源: /programming/2374538/obscuring-database-ids /programming/1895685/should-i-obscure-primary-key-values http://joshua.schachter.org/2007/01/autoincrement.html 这些链接满足了我的一些好奇心,但是SO帖子的选票并不多,而且在这种情况下不一定围绕该主题展开,因此我不确定该怎么做,其中一些声称第三个链接是虚假的。我将保留我的其余帖子: 我了解模糊性和安全性之间的区别,以及两者如何协同工作,但是我无法想象为什么这样做是必要的。 这有什么道理吗,仅仅是偏执狂,还是完全虚假? 我可以想到实现此目标的方法,但是当然,这会增加应用程序代码的复杂性。在什么情况下有用?如果这是一些人经常做的,它怎么通常部署?散列标识符?还有吗 似乎需要大量额外的安全性才能完成大量工作。我并不是在寻找真正的解决方案,我只是想了解人们在现实世界中将如何/为什么这样做。 这是否真的被认为是“最佳实践”,还是仅仅是微不足道的微优化? 注意:我认为有些人可能会得出错误的主意:我并不是在建议难以猜测的id是唯一的安全机制,显然会有通常的访问检查。让我们假设它们已经就位,并且仅仅知道记录的ID或哈希ID不足以授予访问权限。

11
竞争对手公司盗窃了源代码
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 在我工作过的一些公司中,经理们在IT安全顾问上花了很多钱。主要是因为他们担心我们会被竞争对手的公司窃取源代码。但是,作为一名程序员,我认为与竞争对手的公司比较无关紧要,因为它会发现实际的源代码很有用。毕竟,只需访问我们的应用程序就足够了,而且这可以在不违反法律的情况下完成。我认为,业务人员处理的数据比源代码有用得多。 我的问题是;是否有已知的例子,其中源代码被盗并且竞争对手使用了它? 我知道一些游戏引擎(如果我没记错的话,是地震1和半条命2)的源代码被盗了,但是我看不到真的伤害了他们的业务。 (我知道,这个问题可能更适合Stackexchange上的其他论坛)
23 security 

19
使用盗版/破解软件进行开发[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 免责声明:我绝不纵容使用盗版软件。 您是否曾经目睹过将盗版软件用于开发目的?可能是一家公司没有足够的钱来购买一款软件,并且没有免费的替代品吗?可能是一家公司想在购买前试用一下,而该产品没有试用许可证。无论何种情况,您是否曾在一家接受使用盗版/破解软件的公司工作过?这样做有什么后果吗?
22 security  ethics 

1
处理PR来解决公共回购中的安全漏洞的最佳实践是什么?
具有公共存储库的开源项目应如何最好地处理安全报告但尚未公开披露的安全漏洞的拉取请求(PR)? 我参与了一个有数百位贡献者的开源项目。作为定期计划的每月发布的一部分,我们每年发布几次安全公告和漏洞。在发布修补程序版本之前,我们不会发布有关漏洞的信息。我们能够在项目管理系统(JIRA)中安全地管理安全问题。但是,在将安全漏洞提交给GitHub时,我们没有一个很好的流程来掩盖可修复安全漏洞的PR。我们担心人们会在发布这些修补程序之前找到这些修补程序,并创建零日漏洞利用。 我们已经考虑过使用私有存储库来派生主存储库,但是我们当前的大部分审查和质量检查工作流都在PR上进行。如果我们将工作流仅移交给安全团队的私人仓库,则可以将修补程序公开时的时间减少到生成压缩包并将其发布到sourceforge所需的时间,这将是一个很大的改进。我们还可能需要避免将PR合并到我们的公开Beta中。 在朝这个方向发展之前,我想知道在具有开放存储库的开源项目中处理预发行安全性漏洞修复补丁的最佳实践是什么?如果可以通过使用不同于GitHub的平台来更好地解决问题,那么我应该提到我们正在评估迁移到GitLab的过程。

4
为什么不让非参数化查询返回错误呢?
SQL注入是一个非常严重的安全性问题,很大程度上是因为它很容易弄错:显而易见的,直观的方法来构建包含用户输入的查询,这使您容易受到攻击,而减轻它的正确方法则需要您了解参数化查询和SQL注入优先。 在我看来,解决此问题的显而易见的方法是关闭一个显而易见的(但错误的)选项:修复数据库引擎,以便接收到的所有在其WHERE子句中使用硬编码值而不是参数的查询都返回一个漂亮的,描述性的错误消息,指示您改为使用参数。显然,这需要有一个退出选项,这样管理工具中的临时查询之类的东西仍然可以轻松运行,但是默认情况下应启用它。 这样做将关闭SQL注入冷服务,几乎在一夜之间,但是据我所知,实际上没有RDBMS这样做。有什么理由不这样做吗?
22 security  sql  rdbms 

5
私钥存储在哪里?
假设我希望对软件的某些部分进行加密。例如,数据库的凭据等。我需要将这些值存储在某个位置,但是以明文形式存储将使攻击者更容易获得未经授权的访问。 但是,如果我加密了一些明文,那么该密钥存储在哪里?该软件可以访问的任何内容,无论混淆的级别如何,坚定的攻击者都可以访问: 假设密钥受文件系统的安全模型保护;但是(恶意)超级用户或不提供这种保真度的平台又如何呢? 或将密钥硬编码到软件二进制文件中,但始终可以将其反编译,那么开源软件或解释代码又如何呢? 如果生成了密钥,则此类算法将需要确定性(大概),然后将相同的问题应用于种子。 等等 密码学只有其链中最薄弱的一环才有力,这似乎是一个松散的环节!假设这是完成工作的正确工具(请嘲笑我),那么如何才能可靠地保护此类信息呢? 关于适合该工作的工具:例如,在服务访问(数据库,身份验证服务器等)的情况下,您可能会使用服务帐户(可能是某些服务级别)限制对该层的访问审核等),因此不必担心使用明文凭证。 但是,对我而言,这似乎还不够:我不希望任何人在他们不应该去的地方闲逛!

4
程序员对美国出口限制的担忧
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 在设计和发布必须满足美国密码软件出口限制的软件时,我需要考虑哪些方面? 维基百科说,您可以将各种类别分配给加密软件。出口目的地(例如中国,俄罗斯)也发挥了重要作用。但是我并不真正了解这些限制及其对我工作的影响。 有人可以向我解释吗? 我问是因为如果您尝试发布您的应用程序(例如,在Apple的App Store或Android的Market上),则必须确保您的应用程序符合美国出口限制。并且有许多应用程序提供安全的信息存储,例如密码。 他们是否都已通知政府并要求进行审查?当然,您不知道他们是否这样做。但是他们需要这样做吗?

4
预测PHP的rand()的输出
我已经读过很多资料,PHP的rand()的输出作为PRNG是可以预测的,我之所以接受它是因为,因为我在很多地方都看过它。 我对概念验证很感兴趣:如何预测rand()的输出?通过阅读本文,我了解到随机数是从指针(种子)开始的列表中返回的数字,但是我无法想象这是如何可预测的。 有人可以合理地找出在几千个猜测中的给定时间点通过rand()生成了什么随机数吗?甚至一万个猜测?怎么样? 这是因为我看到了一个使用rand()为丢失密码的用户生成令牌的auth库,并且我认为这是一个潜在的安全漏洞。从那以后,我已经用哈希openssl_random_pseudo_bytes(),原始哈希密码和microtime 的混合哈希代替了该方法。完成此操作后,我意识到,如果我在外面看,即使知道它是rand()的md5,也不知道如何猜测该令牌。
21 security  random 

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.