Questions tagged «security»

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

12
基于表单的网站身份验证的权威指南
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 网站的基于表单的身份验证 我们认为,堆栈溢出不仅应作为解决非常具体的技术问题的资源,而且还应作为解决常见问题的通用准则。“基于表单的网站身份验证”应该是此类实验的一个不错的主题。 它应包括以下主题: 如何登入 如何登出 如何保持登录状态 管理Cookie(包括建议的设置) SSL / HTTPS加密 如何储存密码 使用秘密问题 忘记的用户名/密码功能 使用随机数来防止跨站点请求伪造(CSRF) OpenID “记住我”复选框 浏览器自动完成用户名和密码 秘密URL(受摘要保护的公共URL) 检查密码强度 电子邮件验证 还有更多关于 基于表单的身份验证 ... 它不应包含以下内容: 角色和授权 HTTP基本认证 请通过以下方式帮助我们: 建议子主题 提交有关此主题的好文章 编辑官方答案

7
为什么Google会优先使用while(1); 他们的JSON响应?
为什么Google会优先while(1);使用其(私有)JSON响应? 例如,这是在Google日历中打开和关闭日历时的响应: while (1); [ ['u', [ ['smsSentFlag', 'false'], ['hideInvitations', 'false'], ['remindOnRespondedEventsOnly', 'true'], ['hideInvitations_remindOnRespondedEventsOnly', 'false_true'], ['Calendar ID stripped for privacy', 'false'], ['smsVerifiedFlag', 'true'] ]] ] 我认为这是为了防止人们eval()对此进行操作,但是您真正要做的就是替换while,然后进行设置。我认为评估的目的是确保人们编写安全的JSON解析代码。 我已经看到了这几个其他地方,太习惯,但很多更使谷歌(邮件,日历,联系人等),奇怪的是,谷歌文档开头&&&START&&&,而是和谷歌联系人似乎开始while(1); &&&START&&&。 这里发生了什么?
4074 javascript  json  ajax  security 


28
如何防止PHP中进行SQL注入?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 НаэтотвопросетьответынаStack Overflowнарусском:КакимобразомизбежатьSQL-инъекцийвPHP? 如果将用户输入未经修改地插入到SQL查询中,则该应用程序容易受到SQL注入的攻击,如以下示例所示: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 这是因为用户可以输入类似的内容value'); DROP TABLE table;--,并且查询变为: INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--') 如何防止这种情况的发生?

26
在以后的纯文本检索中,我应该如何道德地使用用户密码存储?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 随着我继续建立越来越多的网站和Web应用程序,经常会要求我以某种方式存储用户密码,以便在用户遇到问题时(如果要通过电子邮件发送被忘记的密码链接,请通过电话等)时,我会竭尽全力反对这种做法,并且我进行了很多“额外”编程,以使密码重置和管理协助成为可能,而无需存储其实际密码。 当我无法与之抗衡(或无法获胜)时,我总是以某种方式对密码进行编码,以使它至少不会以明文形式存储在数据库中,尽管我知道如果我的数据库被黑了罪魁祸首破解密码并不需要太多,这让我很不舒服。 在一个理想的世界中,人们会经常更新密码,并且不会在许多不同的站点上重复使用密码-不幸的是,我知道许多人拥有相同的工作/家庭/电子邮件/银行密码,甚至在需要帮助时也免费将其提供给我。如果我的数据库安全性程序由于某种原因失败,我不想成为负责他们财务崩溃的人。 在道德上和道德上,我认为有责任保护某些用户的生计,即使他们以较少的尊重来对待它。我敢肯定,盐腌哈希和不同的编码选项有很多方法和参数,但是当您存储它们时是否有一个“最佳实践”?在几乎所有情况下,如果对我处理细节的方式有任何不同,我都会使用PHP和MySQL。 赏金的其他信息 我想澄清一下,我知道这不是您要做的事情,并且在大多数情况下,拒绝这样做是最好的。但是,我不是要就采用这种方法的优点进行演讲,而是要寻求采取这种方法的最佳步骤。 在下面的注释中,我指出,当网站要求人们执行安全的密码恢复例程时,这些网站主要面向老年人,智障人士或非常年轻的人。尽管在某些情况下我们可能会发现它简单而平凡,但有些用户需要额外的帮助,要么让服务技术帮助他们进入系统,要么直接将其通过电子邮件发送/显示给他们。 在此类系统中,如果没有为用户提供这种级别的访问帮助,则这些人口统计信息的损耗率可能会使应用程序受挫,因此请牢记这一设置。 谢谢大家 这是一个有趣的问题,有很多辩论,我很喜欢。最后,我选择了一个既可以保持密码安全性(我将不必保留纯文本或可恢复的密码),又可以使我指定的用户群登录系统而没有发现我的主要缺点的答案正常的密码恢复。 与往常一样,出于各种原因,我希望将大约5个答案标记为正确答案,但我必须选择最佳答案-其余所有答案都为+1。谢谢大家! 另外,还要感谢Stack社区中的每个人对此问题进行投票和/或将其标记为收藏。我赞扬100票,并希望这次讨论对我所关心的其他问题有所帮助。

14
保护PHP密码的哈希和盐值
当前据说MD5部分不安全。考虑到这一点,我想知道使用哪种机制进行密码保护。 这个问题,“双重哈希”密码是否比仅哈希一次密码安全? 建议多次散列可能是一个好主意,而如何对单个文件实施密码保护?建议使用盐。 我正在使用PHP。我想要一个安全,快速的密码加密系统。将密码哈希一百万次可能更安全,但也更慢。如何在速度和安全性之间取得良好的平衡?另外,我希望结果具有恒定数量的字符。 哈希机制必须在PHP中可用 一定要安全 它可以使用盐(在这种情况下,所有盐都一样好吗?是否有任何方法可以生成优质盐?) 另外,我是否应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗? 如果我不够清楚,我想知道要使用哪个哈希函数以及如何选择合适的盐,以便拥有安全快速的密码保护机制。 尚未完全涵盖我的问题的相关问题: PHP 简单密码加密中的SHA和MD5之间有什么区别简单的密码加密 存储asp.net的密钥和密码的安全方法 您将如何在Tomcat 5.5中实现盐腌密码



18
保护REST API / Web服务的最佳做法
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 在设计REST API或服务时,是否存在用于处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您以WS-Security为指南,并且有关该主题的文献很多。我发现有关保护REST端点的信息较少。 尽管我了解REST故意没有类似于WS- *的规范,但我希望出现了最佳实践或推荐的模式。 任何讨论或相关文件的链接将不胜感激。如果重要的话,我们将使用WCF和POX / JSON序列化消息,以使用.NET Framework v3.5构建的REST API /服务。

30
如何避免APK文件的反向工程?
我正在开发适用于Android 的付款处理应用程序,并且我想防止黑客访问APK文件中的任何资源,资产或源代码。 如果有人将.apk扩展名更改为.zip,那么他们可以将其解压缩并轻松访问应用程序的所有资源和资产,并且使用dex2jar和Java反编译器,他们还可以访问源代码。对Android APK文件进行反向工程非常容易-有关更多详细信息,请参见Stack Overflow问题:从APK文件反向工程到项目。 我已经使用了Android SDK随附的Proguard工具。当我反向工程使用签名的密钥库和Proguard生成的APK文件时,我得到的代码很混乱。 但是,Android组件的名称保持不变,某些代码(如应用中使用的键值)保持不变。根据Proguard文档,该工具不能混淆清单文件中提到的组件。 现在我的问题是: 如何完全防止 Android APK的反向工程?这可能吗? 如何保护应用程序的所有资源,资产和源代码,以使黑客无法以任何方式对APK文件进行黑客攻击? 有没有办法使黑客攻击变得更加艰难甚至不可能?我还能做些什么来保护APK文件中的源代码?

7
PDO准备好的语句是否足以防止SQL注入?
假设我有这样的代码: $dbh = new PDO("blahblah"); $stmt = $dbh->prepare('SELECT * FROM users where username = :username'); $stmt->execute( array(':username' => $_REQUEST['username']) ); PDO文档说: 准备好的语句的参数不需要用引号引起来。司机为您处理。 那真的是我避免SQL注入所需要做的一切吗?真的那么容易吗? 您可以假设MySQL会有所作为。另外,我真的只是对针对SQL注入使用准备好的语句感到好奇。在这种情况下,我不在乎XSS或其他可能的漏洞。


4
SQL注入绕过mysql_real_escape_string()
即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性? 考虑这种示例情况。SQL是用PHP构造的,如下所示: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'"; 我听到很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可能被黑。但是我想不出任何可能的利用方式? 像这样的经典注射: aaa' OR 1=1 -- 不工作。 您是否知道上面的PHP代码会进行任何可能的注入?


4
bcrypt如何内置盐?
Coda Hale的文章“如何安全存储密码”声称: bcrypt具有内置的盐,可以防止彩虹表攻击。 他引用了这篇论文,该论文说在OpenBSD的实现中bcrypt: OpenBSD从arcfour(arc4random(3))密钥流生成128位bcrypt盐,该密钥流以内核从设备时序收集的随机数据作为种子。 我不知道这怎么工作。在我的盐概念中: 每个存储的密码都需要不同,因此必须为每个密码生成一个单独的彩虹表 它需要存储在某个地方以便可重复:当用户尝试登录时,我们尝试输入密码,重复与最初存储密码时相同的盐和哈希程序,然后进行比较 当我将Devise(Rails登录管理器)与bcrypt一起使用时,数据库中没有salt列,因此感到困惑。如果盐是随机的并且没有存储在任何地方,我们如何可靠地重复哈希过程? 简而言之,bcrypt如何内置盐?

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.