Questions tagged «security»

与应用程序安全性和对软件的攻击有关的主题。请不要单独使用此标签,否则会造成歧义。如果您的问题与特定的编程问题无关,请考虑改为在Information Security SE上提问:https://security.stackexchange.com

9
您如何加密和解密PHP字符串?
我的意思是: Original String + Salt or Key --> Encrypted String Encrypted String + Salt or Key --> Decrypted (Original String) 也许像这样: "hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g) "2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!" 在PHP中,您该怎么做? 尝试使用Crypt_Blowfish,但对我不起作用。

8
SecureString在C#应用程序中是否可行?
如果我的假设在这里错误,请随时纠正我,但是让我解释为什么我要问。 取自MSDN,是SecureString: 表示应保密的文本。文本在使用时经过加密以确保隐私,在不再需要时从计算机内存中删除。 我明白了,将密码或其他私人信息存储在SecureString上方是完全有意义的System.String,因为您可以控制将密码和其他私人信息实际存储在内存中的方式和时间,因为System.String: 既是不可变的,并且在不再需要时不能以编程方式安排进行垃圾回收;也就是说,实例在创建后是只读的,无法预测何时将实例从计算机内存中删除。因此,如果String对象包含敏感信息,例如密码,信用卡号或个人数据,则使用该信息后可能会泄露该信息,因为您的应用程序无法从计算机内存中删除数据。 但是,对于GUI应用程序(例如ssh客户端),SecureString 必须从构建 System.String。所有的文本控件都使用字符串作为其基础数据类型。 因此,这意味着即使用户使用密码掩码,每次用户按下一个键时,旧的字符串都会被丢弃,而新的字符串将被构建以表示文本框内的值。而且我们无法控制何时或是否从内存中丢弃这些值中的任何一个。 现在该登录服务器了。你猜怎么了?您需要在连接上传递字符串以进行身份​​验证。因此,让我们将其SecureString转换为System.String....现在堆上有一个字符串,无法强制其通过垃圾回收(或将0写入其缓冲区)。 我的观点是:无论您做什么,SecureString都将被转换为System.String,这意味着它至少会在某个时刻存在于堆中(不保证任何垃圾回收)。 我的意思不是:是否有某种方法可以绕过向ssh连接发送字符串,或者可以避免使控件存储字符串(创建自定义控件)。对于这个问题,您可以将“ ssh连接”替换为“登录表格”,“注册表格”,“付款表格”,“您要喂养的食物,而不是您的孩子的食物”,等等 那么,在什么时候使用SecureString实际可行呢? 完全消除System.String对象的使用是否值得花费额外的开发时间? SecureString仅仅是为了减少a System.String在堆上的时间(降低其移至物理交换文件的风险)的全部意义? 如果攻击者已经具有检查堆的方法,那么他很可能要么(A)已经具有读取击键的方法,要么(B)已经物理上拥有了机器 ……因此可以使用SecureString防止他进入的方法。反正数据? 这仅仅是“默默无闻的安全”吗? 抱歉,如果我把问题放在太深的地方,好奇心会变得更好。随时回答我的任何或所有问题(或告诉我我的假设完全错误)。:)
224 c#  security 

6
SHA512与Blowfish和Bcrypt的比较
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在查看哈希算法,但找不到答案。 Bcrypt使用河豚 河豚胜过MD5 问:河豚比SHA512好吗? 谢谢.. 更新: 我想澄清一下,我了解哈希和加密之间的区别。促使我这样问问题的是本文,作者将bcrypt称为“自适应哈希” 由于bcrypt基于Blowfish,因此我被认为Blowfish是一种哈希算法。如果像答案所指出的那样加密,那么在我看来,它不应在本文中占有一席之地。更糟糕的是,他认为bcrypt是最好的。现在也令我困惑的是phpass类(我相信用于密码哈希)使用bcrypt(即河豚,即加密)。根据你们告诉我的新信息(河豚加密),此类听起来很错误。我想念什么吗?

5
ssl证书如何验证?
安全验证ssl证书需要执行哪些步骤?我(非常有限)的理解是,当您访问https站点时,服务器将证书发送给客户端(浏览器),浏览器从该证书获取证书的颁发者信息,然后使用该信息与颁发者联系,并以某种方式进行比较有效性证书。 这到底是怎么做的? 该过程如何使其不受中间人攻击? 是什么阻止一些随机的人设置自己的验证服务以用于中间人攻击,从而使一切“看起来”都是安全的?


18
阻止人们入侵Flash游戏的基于PHP的高分表的最好方法是什么
我说的是一个动作游戏,没有最高分数限制,也没有办法通过重播动作等来验证服务器上的分数。 我真正需要的是Flash / PHP中最强大的加密,以及一种防止人们通过我的Flash文件以外的方式调用PHP页面的方法。过去,我尝试过一些简单的方法,可以对单个分数进行多次调用,并完成校验和/斐波那契序列等,还使用Amayeta SWF Encrypt对SWF进行混淆,但最终它们都被黑了。 多亏了StackOverflow的回应,我现在已经从Adobe找到了更多信息-http: //www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_12.html和https://github.com/mikechambers/as3corelib-我想我可以用于加密。不确定这是否会让我了解CheatEngine。 如果它们不同,我需要知道AS2和AS3的最佳解决方案。 主要问题似乎是TamperData和LiveHTTP标头之类的,但是我知道还有更先进的黑客工具-CheatEngine(感谢Mark Webster)


7
java.util.Random和java.security.SecureRandom之间的区别
我的团队收到了一些生成随机令牌的服务器端代码(Java),我对此有一个疑问- 这些令牌的用途非常敏感-用于会话ID,密码重置链接等。因此,它们确实需要进行密码随机处理,以避免有人猜测或对它们进行暴力破解。令牌是“长”的,因此它是64位长。 该代码当前使用java.util.Random该类来生成这些令牌。该文档的java.util.Random明确规定如下: java.util.Random的实例不是加密安全的。可以考虑使用SecureRandom获得加密安全的伪随机数生成器,以供对安全敏感的应用程序使用。 但是,代码当前使用的方式java.util.Random是-实例化java.security.SecureRandom该类,然后使用该SecureRandom.nextLong()方法获取用于实例化java.util.Random该类的种子。然后使用java.util.Random.nextLong()方法生成令牌。 所以,我现在的问题是-仍然java.util.Random使用种子进行播种还是不安全的java.security.SecureRandom?我是否需要修改代码,使其java.security.SecureRandom专门用于生成令牌? 目前,代码种子是Random启动时的一次

22
在PHP中生成随机密码
我正在尝试在php中生成一个随机密码。 但是我得到所有的'a's,返回类型是数组类型,我希望它是一个字符串。有关如何更正代码的任何想法? 谢谢。 function randomPassword() { $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789"; for ($i = 0; $i < 8; $i++) { $n = rand(0, count($alphabet)-1); $pass[$i] = $alphabet[$n]; } return $pass; }

10
这个新的ASP.NET安全漏洞有多严重,如何解决?
我刚刚在网上阅读了有关ASP.NET中新发现的安全漏洞的信息。您可以在此处阅读详细信息。 问题在于ASP.NET实施AES加密算法以保护这些应用程序在用户会话期间生成的用于存储信息的cookie的完整性。 这有点含糊,但这是一个更令人恐惧的部分: 攻击的第一阶段需要数千个请求,但是一旦成功,攻击者获得了秘密密钥,就完全是秘密的。所需的密码知识非常基础。 总而言之,我对安全性/加密图主题还不够熟悉,无法知道这是否真的那么严重。 那么,所有ASP.NET开发人员都应该担心这种可以在几秒钟之内拥有任何ASP.NET网站的技术吗? 此问题如何影响普通的ASP.NET开发人员?它对我们有影响吗?在现实生活中,此漏洞的后果是什么?最后,是否有防止该漏洞的解决方法? 感谢您的回答! 编辑:让我总结一下我得到的答复 因此,这基本上是一种“ padding oracle”攻击。@Sri对这种攻击的含义提供了很好的解释。这是有关此问题的令人震惊的视频! 关于此漏洞的严重性:是的,确实是严重的。它使攻击者可以了解应用程序的机器密钥。因此,他可以做一些非常不需要的事情。 拥有应用程序的机器密钥后,攻击者可以解密身份验证Cookie。 甚至更糟糕的是,他可以使用任何用户的名称生成身份验证cookie。因此,他可以在网站上以任何人的身份出现。该应用程序无法区分您还是使用您自己的名字生成身份验证Cookie的黑客。 它还使他能够解密(并生成)会话cookie,尽管这不像前一个那么危险。 不太严重:他可以解密页面的加密ViewState。(如果您使用ViewState存储机密数据,则无论如何都不应该这样做!) 出乎意料:借助机器密钥,攻击者可以从您的Web应用程序下载任何文件,甚至通常无法下载的文件也是如此!(包括Web.Config等) 这是我得到的很多好的实践,它们不能解决问题,但有助于提高Web应用程序的总体安全性。 您可以使用受保护的配置加密敏感数据 使用仅HTTP cookie 防止DoS攻击 现在,让我们集中讨论这个问题。 斯科特·格思里(Scott Guthrie)在他的博客上发布了关于它的条目 ScottGu的有关该漏洞的FAQ博客文章 ScottGu关于漏洞的更新 Microsoft对此有安全建议 了解漏洞 有关漏洞的其他信息 解决方案 启用customErrors并创建一个将所有错误都重定向到的错误页面。是的,甚至是404s。(ScottGu说,区分404和500是此攻击的必要条件。)此外,在您的代码中Application_Error或Error.aspx放置一些会造成随机延迟的代码。(生成一个随机数,并使用Thread.Sleep睡眠那么长时间。)这将使攻击者无法确定服务器上到底发生了什么。 有人建议切换回3DES。从理论上讲,如果您不使用AES,就不会遇到AES实现中的安全漏洞。事实证明,根本不建议这样做。 其他一些想法 似乎并非 每个人都认为解决方法足够好。 感谢所有回答我的问题的人。我不仅从这个问题中学到了很多知识,而且从总体上学到了网络安全方面的知识。我将@Mikael的答案标记为已接受,但其他答案也非常有用。

6
AngularJS在扩展页面中将URL更改为“不安全:”
我正在尝试将Angular与一系列应用程序配合使用,并且每个链接都是一个链接,用于更详细地查看应用程序(apps/app.id): <a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a> 每次我点击其中一个链接时,Chrome都会将该网址显示为 unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id 哪里unsafe:来的?

5
使用CAS或OAuth进行SSO?
我想知道我是否应该使用CAS协议或OAuth +一些身份验证提供程序进行单点登录。 方案示例: 用户尝试访问受保护的资源,但未通过身份验证。 该应用程序将用户重定向到SSO服务器。 如果蜜蜂通过了身份验证,则用户将从SSO服务器获取令牌。 SSO重定向到原始应用程序。 原始应用程序针对SSO服务器检查令牌。 如果令牌正常,则将允许访问,并且应用程序知道用户ID。 用户执行注销,并同时从所有连接的应用程序中注销(单次注销)。 据我了解,这正是CAS发明的目的。CAS客户端必须实现CAS协议才能使用身份验证服务。现在,我想知道要在客户端(消费者)站点上使用CAS还是OAuth。OAuth是否可以替代CAS的那部分?是否应首选OAuth作为事实上的新标准?是否有易于使用的(不是Sun OpenSSO!)替代CAS的身份验证部分,支持不同的方法,如用户名/密码,OpenID,TLS证书...? 内容: 不同的应用程序应依赖SSO服务器的身份验证,并应使用类似于会话的内容。 这些应用程序可以是GUI Web应用程序或(REST)服务。 SSO服务器必须提供一个用户ID,这对于从中央用户信息存储中获取有关用户的更多信息(例如角色,电子邮件等)是必需的。 单点退出应该是可能的。 大多数客户端都是用Java或PHP编写的。 我刚刚发现WRAP,它可以成为OAuth的后续产品。它是Microsoft,Google和Yahoo指定的新协议。 附录 我了解到,即使OAuth可以用于实现SSO,也不是为身份验证而设计的,而只能与OpenID之类的SSO服务一起使用。 在我看来,OpenID是“新CAS”。CAS具有一些OpenID遗漏的功能(例如单点注销),但是在特定情况下添加遗漏的部分并不难。我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中。我知道CAS也支持OpenID,但是我认为CAS与OpenID无关。

11
安全的Web服务:HTTPS上的REST与SOAP + WS-Security。哪个更好?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 无论如何我都不是安全专家,但是我更喜欢创建REST风格的Web服务。 在创建需要具有数据传输功能的新服务时。关于哪种方法更安全,我们进行了辩论-使用HTTPS的REST或使用WS-Security的SOAP WS。 我的印象是我们可以对所有Web服务调用使用HTTPS,这种方法将是安全的。我的看法是,“如果HTTPS对银行和金融网站足够好,那么对我来说也足够好”。再说一次,我不是这个领域的专家,但是我认为这些人对这个问题相当认真地考虑过并且对HTTPS感到满意。 一位同事不同意,并说SOAP和WS-Security是唯一的方法。 网络似乎遍地都是。 也许这里的社区可以权衡每个人的利弊?谢谢!

11
什么时候需要.NET中的SecureString?
我试图弄清.NET的SecureString的用途。从MSDN: System.String类的实例是不可变的,并且在不再需要时,无法通过编程方式安排进行垃圾回收;也就是说,实例在创建后是只读的,无法预测何时将实例从计算机内存中删除。因此,如果String对象包含敏感信息,例如密码,信用卡号或个人数据,则使用该信息后可能会泄露该信息,因为您的应用程序无法从计算机内存中删除数据。 SecureString对象与String对象相似,因为它具有文本值。但是,SecureString对象的值是自动加密的,可以修改直到应用程序将其标记为只读,并且可以由应用程序或.NET Framework垃圾收集器从计算机内存中删除。 初始化实例或修改值时,SecureString实例的值将自动加密。您的应用程序可以通过调用MakeReadOnly方法使实例不可变并阻止进一步的修改。 自动加密是最大的收获吗? 我为什么不能说: SecureString password = new SecureString("password"); 代替 SecureString pass = new SecureString(); foreach (char c in "password".ToCharArray()) pass.AppendChar(c); 我缺少SecureString的哪个方面?

13
JavaScript:客户端验证与服务器端验证
进行客户端或服务器端验证哪个更好? 在我们的情况下,我们正在使用 jQuery和MVC。 在我们的视图和控制器之间传递的JSON数据。 我所做的许多验证工作都是在用户输入数据时对数据进行验证。例如,我使用该keypress事件来防止文本框中的字母,设置最大字符数,并且该数字在一定范围内。 我想更好的问题是,与客户端相比,进行服务器端验证是否有任何好处? 真棒回答大家。我们拥有的网站受到密码保护,并且用户群较小(<50)。如果他们没有运行JavaScript,我们将发送忍者。但是,如果我们要为每个人设计一个站点,那么我同意双方都进行验证。

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.