Questions tagged «security»

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

6
当我的应用程序进入后台时,如何防止Android截屏?
我当前正在构建的应用程序要求该应用程序必须防止操作系统出于安全原因将其推入后台时截取该应用程序的屏幕截图。这样,当在应用程序之间切换时,它将无法看到上一个活动屏幕。 我打算将此功能放在应用程序类的onPause方法中,但首先我需要了解如何实现此功能。 那么,有没有人知道如何解决此问题?

4
最佳做法:添加密码?
我遇到了一个讨论,在该讨论中,我了解到我实际上在做的并不是给密码加盐,而是给它们添加了胡椒粉,从那时起,我就开始使用以下功能: hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 忽略选择的哈希算法(我希望这是关于盐和胡椒的讨论,而不是特定算法的讨论,但我使用的是安全算法),这是安全的选择还是我应该做一些不同的事情?对于那些不熟悉这些术语的人: 甲盐是通常存储与设计,使其不可能使用哈希表来破解密码的数据库中的字符串中的随机生成值。由于每个密码都有自己的特色,因此必须将所有密码单独强行破解。但是,由于盐与密码哈希一起存储在数据库中,因此数据库泄密意味着同时丢失两者。 甲胡椒是从中旨在是秘密的数据库(在应用程序的源代码通常硬编码)分开存储站点范围静态值。使用它是为了避免对数据库造成危害,不会导致整个应用程序的密码表都是蛮力的。 我有什么遗漏的东西吗?保护密码安全的最佳选择是保护我的用户的安全吗?这样做是否有潜在的安全缺陷? 注意:出于讨论目的,假设应用程序和数据库存储在单独的计算机上,不共享密码等,因此违反数据库服务器并不自动意味着违反了应用程序服务器。

5
PHP会话修复/劫持
我试图了解有关PHP 会话修复和劫持以及如何防止这些问题的更多信息。我一直在Chris Shiflett的网站上阅读以下两篇文章: 会话固定 会话劫持 但是,我不确定我是否理解正确。 为了帮助防止会话固定,只需调用session_regenerate_id(true);就可以了。成功登录某人后?我想我理解正确。 他还讨论了如何使用通过$ _GET在URL中传递的令牌来防止会话劫持。究竟该怎么做?我猜想有人登录时会生成他们的令牌并将其存储在会话变量中,然后在每个页面上将该会话变量与$ _GET变量的值进行比较吗? 每个会话或每次加载页面时仅需要更改一次此令牌吗? 它们也是防止劫持而不必在URL中传递值的好方法吗?这会容易得多。

2
Google+ +1小部件如何脱离其iframe?
不知何故,悬停在Google+信息加一插件可以引入一个提示型协议,显然比越大<iframe>在包含它元件。我已经检查了DOM来确认这一点。* 所以: 什么?怎么样!? 如果被恶意使用,这是否不是大量的点击劫持机会?(想象一下有人为这些社交小部件执行了MITM!) *更新:我所看到的是,提示-Y的信息是在第二,动态创建iframe。

9
如何在https站点上的iframe中允许http内容
我将一些HTML加载到iframe中,但是当引用的文件使用的是http(而不是https)时,出现以下错误: [已屏蔽] {current_pagename}中的页面运行了来自{referenced_filename}的不安全内容 有什么办法可以关闭它或解决它吗? iframe没有src属性,其内容使用以下方法设置: frame.open(); frame.write(html); frame.close();
145 html  security  http  iframe  https 

3
跨域表单过帐
我已经看过有关该主题的文章和帖子(包括SO),并且普遍的评论是,同源策略阻止跨域的POST形式。我见过有人建议将同源政策不适用于表单帖子的唯一位置是此处。 我想从一个更“官方”或正式的来源获得答案。例如,是否有人知道解决同源性如何影响表单POST的RFC? 澄清:我不是在问是否可以构造GET或POST并将其发送到任何域。我在问: 如果Chrome,IE或Firefox允许域“ Y”中的内容将POST发送到域“ X” 如果接收POST的服务器实际上将看到所有表单值。我之所以这样说,是因为大多数在线讨论记录的测试人员都说服务器收到了该帖子,但是表单值全部为空/已剥离。 哪个正式文档(即RFC)说明了预期的行为(无论浏览器当前已实现了什么)。 顺便说一句,如果同源源不影响表单POST,那么这使得为什么需要使用防伪令牌更加明显。我之所以说“有点”,是因为很难相信攻击者可以简单地发出HTTP GET来检索包含反伪造令牌的表单,然后进行包含相同令牌的非法POST。注释?

11
Android游戏不断被黑客入侵[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 因此,我们已经经历了好几次了,我们发布了一款游戏(以便宜的价格出售),有人入侵了它并将其放在镜子上。我们为所有应用程序设置了Google快讯,因此我们每天都会被告知谁在进行黑客入侵。到目前为止,我们已经按照Google的建议实施了许可服务,每次使用唯一的设备ID发起许可时,我们都会随机生成盐。首次启动应用程序时,我们运行一次检查服务。然后,我们为密钥和存储的值生成一个512个字符的哈希,然后将其与SharedPreferences中的值进行比较。 现在,我知道检查一次可能是应用程序被阻止的地方。我们的字节码很可能已被查看并重新编译,而没有启动检查的行。 从这里开始,我不想混淆我们的代码,因为我以前看过它已损坏。我想要更坚实的东西,我也想学习如何正确地做到这一点。我现在对学习的兴趣要比赚钱更感兴趣,因为只有2%的人会寻找被黑客入侵的版本。 到目前为止,我自己提出了一个随机数生成器,该生成器放置在游戏的多个启动区域中。启动后(例如,每50次中的1次)许可证将被检查。我知道这会使黑客更难,因为破解者必须消除每种情况,进行编译,消除,编译。但是,这种方法仍然很容易破解...所以你们建议什么?同样,我对这个安全过程真的很感兴趣,所以请进行教育,不要将其变成关于混淆或基于时间戳定期检查的讨论。 谢谢

11
使用Spring Security进行单元测试
我公司一直在评估Spring MVC,以确定我们是否应该在我们的下一个项目中使用它。到目前为止,我喜欢我所看到的内容,现在,我正在研究Spring Security模块,以确定是否可以/应该使用它。 我们的安全要求非常基本。用户只需要能够提供用户名和密码即可访问网站的某些部分(例如获取有关其帐户的信息);并且网站上的页面很少(常见问题解答,支持等),应该为匿名用户提供访问权限。 在我创建的原型中,我已经在Session中为经过身份验证的用户存储了一个“ LoginCredentials”对象(其中仅包含用户名和密码)。例如,某些控制器检查此对象是否在会话中,以获取对登录用户名的引用。我正在寻找用Spring Security替换这种自生的逻辑,这将具有消除“我们如何跟踪已登录用户的方式”的好处。和“我们如何验证用户身份?” 从我的控制器/业务代码。 看来Spring Security提供了(每个线程)“上下文”对象,以便能够从您应用程序中的任何位置访问用户名/主要信息... Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); ...在某种程度上似乎很不像Spring,因为该对象是一个(全局)单例。 我的问题是这样的:如果这是在Spring Security中访问有关已认证用户的信息的标准方法,那么将Authentication对象注入SecurityContext的可接受的方法是什么,以便当单元测试需要一个认证用户? 我是否需要在每个测试用例的初始化方法中进行连接? protected void setUp() throws Exception { ... SecurityContextHolder.getContext().setAuthentication( new UsernamePasswordAuthenticationToken(testUser.getLogin(), testUser.getPassword())); ... } 这似乎太冗长了。有更容易的方法吗? 该SecurityContextHolder对象本身看起来非常不像Spring ...

9
哈希密码和加密密码之间的区别
当前对该问题的最高投票指出: 另一个与安全性无关的安全性问题虽然完整,但完全无法解决哈希散列密码和加密密码之间的区别。最常见于程序员试图提供不安全的“提醒我密码”功能的代码中。 到底有什么区别?我总是给人以哈希是一种加密形式的印象。海报所指的不安全功能是什么?

11
使用过时的C编译器会带来安全风险吗?
我们生产中的一些构建系统没人关心,这些机器运行的是GCC 3或GCC 2等古老版本的GCC。 而且我不能说服管理层将其升级到最新版本:他们说,“如果还没有破产,就不要修复它”。 由于我们维护了非常古老的代码库(写于80年代),因此C89代码在这些编译器上可以很好地进行编译。 但是我不确定使用这些旧内容是个好主意。 我的问题是: 使用旧的C编译器会损害已编译程序的安全性吗? 更新: Visual Studio 2008为Windows目标构建了相同的代码,MSVC尚不支持C99或C11(我不知道是否有更新的MSVC支持),并且可以使用最新的GCC在Linux机器上构建它。因此,如果我们只使用更新的GCC,它的构建可能会和以前一样好。
139 c  security  gcc 

18
我可以通过转义单引号和用单引号引起来的用户输入来防止SQL注入吗?
我意识到,在构建包含用户输入的查询时,参数化SQL查询是清理用户输入的最佳方式,但是我想知道使用用户输入并转义任何单引号并将整个字符串都用单引号引起的问题是什么。这是代码: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" 用户输入的任何单引号都将替换为双单引号,这消除了用户结束字符串的能力,因此他们可能键入的其他任何内容(例如分号,百分号等)都将成为字符串的一部分,并且实际上并未作为命令的一部分执行。 我们使用的是Microsoft SQL Server 2000,我认为单引号是唯一的字符串定界符,也是逃避字符串定界符的唯一方法,因此无法执行用户键入的任何内容。 我没有发现针对此问题发起SQL注入攻击的任何方法,但我意识到,如果这在我看来像防弹一样,那么其他人可能已经想到了,并且这将是普遍的做法。 此代码有什么问题?有没有办法使SQL注入攻击超越这种清理技术?利用此技术的样本用户输入将非常有帮助。 更新: 我仍然不知道有什么方法可以有效地对此代码发起SQL注入攻击。一些人建议反斜杠可以转义一个单引号,而让另一个反引号结束该字符串,以便该字符串的其余部分将作为SQL命令的一部分执行,并且我意识到该方法可以将SQL注入到一个MySQL数据库,但是在SQL Server 2000中,唯一能够逃脱单引号的方法是使用另一个单引号。反斜杠不会这样做。 并且,除非有一种方法可以停止转义单引号,否则将不会执行其余的用户输入,因为所有这些都将被视为一个连续的字符串。 我知道有更好的方法可以清除输入,但是我真的更感兴趣于了解为什么我上面提供的方法行不通。如果有人知道针对此清理方法进行SQL注入攻击的任何特定方式,我很乐意看到它。

6
有什么方法可以将恶意代码放入正则表达式中?
我想在我的公共网页上添加正则表达式搜索功能。除了对输出进行HTML编码之外,我还需要采取其他措施来防止恶意用户输入吗? 解决正反问题的人们淹没了Google搜索-使用正则表达式检测恶意输入-我对此并不感兴趣。在我的情况下,用户输入是一个正则表达式。 我将在.NET(C#)中使用Regex库。
138 regex  security 

14
移动应用中的OAuth机密
使用OAuth协议时,您需要从要委派给该服务的秘密字符串。如果您是在Web应用程序中执行此操作,则可以仅将秘密存储在数据库或文件系统中,但是在移动应用程序(或与此相关的桌面应用程序)中处理秘密的最佳方法是什么? 将字符串存储在应用程序中显然不好,因为有人很容易找到并滥用它。 另一种方法是将其存储在您的服务器上,并让应用在每次运行时都将其获取,而不是将其存储在手机上。这几乎一样糟糕,因为您必须在应用程序中包含URL。 我能想到的唯一可行的解​​决方案是,首先正常获取访问令牌(最好使用应用程序内部的Web视图),然后将所有进一步的通信路由到我们的服务器,这会将秘密添加到请求数据中并进行通信。与提供者。再说一次,我是安全菜鸟,所以我真的很想听听一些知识渊博的人们对此的看法。在我看来,大多数应用程序都不会采用这些长度来保证安全性(例如,Facebook Connect似乎假定您将秘密信息直接放入应用程序中的字符串中)。 另一件事:我不认为最初请求访问令牌涉及秘密,因此可以在不涉及我们自己的服务器的情况下完成。我对么?

3
API密钥和秘密密钥如何工作?如果必须将我的API和密钥传递给另一个应用程序,这是否安全?
我只是开始考虑api密钥和秘密密钥是如何工作的。就在两天前,我注册了Amazon S3并安装了S3Fox插件。他们要求我提供我的访问密钥和秘密访问密钥,这两个都要求我登录才能访问。 所以我想知道,如果他们要我提供我的秘密密钥,他们一定会将它存储在正确的位置吗?问我输入信用卡号或密码并将其存储在他们自己的数据库中,这基本上不是同一件事吗? 秘密密钥和api密钥应该如何工作?他们需要成为什么秘密?这些使用秘密密钥的应用程序是否以某种方式存储了密钥?

6
如何获得在Symfony2中代表当前用户的实体?
我正在使用Symfony安全设置。一切正常,但是我不知道如何做一件重要的事情: 在树枝上,我可以通过执行以下操作来获取当前用户的信息: Welcome, {{ app.user.username }} 或类似 如何在控制器中访问相同的信息?具体来说,我想获取当前的用户实体,以便可以将其关联存储在另一个实体中(一对一映射)。 我真的很希望 $this->get('security.context')->getToken()->getUser() 但这不起作用。它给了我一类类型 Symfony\Component\Security\Core\User\User 我想要一种 Acme\AuctionBundle\Entity\User 这是我的实体...

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.