我正在尝试使用登录模块构建应用程序.我想保存用户登录状态,以便最终用户不必重新键入他/她的凭据,除非他们已明确注销.
我知道这SharedPreferences可以有一些用处,但如果有人可以在这个问题上为我提供一些专家意见,我将不胜感激.
在凭证存储的上下文中,一种可能的威胁模型是攻击者,其能够:
AFAIK,对这种类型的攻击的共识是,它是不可能阻止的(因为凭证必须存储在内存中以便程序实际使用它们),但有几种技术可以缓解它:
第一种技术很容易实现,可能通过密钥环 (希望内核空间存储)
根据我的知识,第二个是没有编写C模块就完全无法实现(但我希望在这里被证明是错误的,或者有一个现有模块列表)
第三个是棘手的.
特别是,python是一种具有非常强大的内省和反射功能的语言,很难阻止对可以在解释器进程中执行python代码的任何人访问凭据.
似乎已达成共识,即无法强制实施私有属性,并且尝试使用私有属性最多会惹恼使用您的代码的其他程序员.
综合考虑所有这些因素,如何使用python安全地存储身份验证凭据?什么是最佳做法?关于语言"一切都是公共的"哲学可以做些什么吗?我知道"我们都在同意这里的成年人",但我们是否应该在与攻击者共享密码和使用其他语言之间做出选择?
我想知道如何创建可以由Jenkins和Jenkins中运行的作业连接到第三方服务的凭据.
如果我尝试在与我在同一域中的计算机中打开注册表(并且我的登录用户在目标计算机上具有管理员权限),则此.NET API可以正常工作.
如果它是一个具有不同的本地管理用户(我有密码)的域外机器,那就太棘手了.
我尝试在调用OpenRemoteBaseKey()之前使用WNetUseConnection()(过去在我想要读取远程磁盘文件的情况下很好用),但是没有骰子 - 我得到了访问被拒绝的异常.
显然,我必须以其他方式传递证书,但如何?
我想创建一个Android Webview,通过HTTPS使用凭据通过安全连接连接到网站.
第一个难点是接受证书(私人),它是用这个非常有用的帖子解决的.
第二个难点是使用凭据,我找到了这篇文章.
(来自dparnas的第一个回答)似乎与它相处得很好,但它谈论HTTP连接而不是HTTPS.我试过了,但它不起作用,我只是到达登录表单页面,没有任何错误消息,只是正常的空白表单.
这是我的代码:
import android.app.Activity;
import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.HttpAuthHandler;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class ConnectorWebView extends Activity {
WebView mWebView;
String mUsrName;
String mPassC;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.connwebview);
// Getting info from Intent extras
// Get it if it s different from null
Bundle extras = getIntent().getExtras();
mUsrName = extras != null ? extras.getString("username") : null;
mPassC = …Run Code Online (Sandbox Code Playgroud) 我想知道Google App Engine 网址提取Python API是否不支持访问具有凭据的网址:
http://username:password@www.domain.com/
Run Code Online (Sandbox Code Playgroud)
它应该是一个基本功能,但我无法让它工作,也找不到任何有关它支持或不支持的文档.
我正在尝试使用WCF服务:
该服务的配置是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
<binding name="netNamedPipeEndpoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
<netTcpBinding>
<binding name="netTcpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
<wsHttpBinding>
<binding …Run Code Online (Sandbox Code Playgroud) 我正在开发一个python/django应用程序,除其他外,它将数据同步到各种其他服务,包括samba共享,ssh(scp)服务器,Google应用程序等.因此,它需要存储凭据才能访问这些服务.我认为将它们存储为未加密的字段将是一个坏主意,因为SQL注入攻击可以检索凭据.所以我需要在存储之前加密信用卡 - 有没有可靠的库来实现这一点?
一旦信用卡被加密,它们就需要在可用之前被解密.我的应用有两种用例:
或者我应该采取不同的方法解决这个问题?
我可以在Maven settings.xml中使用单个服务器凭据拥有多个存储库吗?
我们使用Maven 3.0.4将工件部署到Nexus pro 2.2.1版
我们在同一台服务器上有多个存储库,用户使用相同的凭据访问所有这些存储库.
settings.xml具有相同凭据的多个存储库:
<repositories>
<repository>
<id>Staging-group</id>
<url>http://server/nexus/content/groups/Staging-group</url>
<repository>
<id>RELEASES</id>
<url>http://server/nexus/content/repositories/RELEASES</url>
</repository>
<repository>
<id>INTERNALS</id>
<url>http://server/nexus/content/repositories/INTERNALS</url>
</repository>
<repository>
<id>SNAPSHOTS</id>
<url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
</repositories>
.....
<servers>
<server>
<id>Staging-group</id>
<username>user</username>
<password>password</password>
</server>
<server>
<id>RELEASES</id>
<username>user</username>
<password>password</password>
</server>
<server>
<id>SNAPSHOTS</id>
<username>user</username>
<password>password</password>
</server>
<server>
<id>INTERNALS</id>
<username>user</username>
<password>password</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
Nexus使用Active Directory身份验证.因此,每次用户更改其Windows密码时,他们都需要更改settings.xml文件中的所有四个条目
有没有办法为所有存储库声明一次凭据?
谢谢,Eyal
有几个人正在通过网络共享在单个Web服务器上处理多个项目.每个项目都有自己的git存储库.在启动项目时,我们为每个开发项目的开发人员和每个项目的临时环境提供个人开发环境.所有文件都归www-data,因为这是Apache使用的用户.
为了防止我们在拉,推和切换到新分支时多次输入我们的用户名和密码,我们目前正在使用凭证缓存(如此处所示).
$ git config --global credential.helper
cache --timeout=900
Run Code Online (Sandbox Code Playgroud)
我们面临的问题是当某人(用户1)执行经过身份验证的git操作时,他们会输入他们的凭据.在超时内,其他人(用户2)在他们自己的存储库中执行经过身份验证的git操作,该存储库使用用户1的凭据.这将导致以下两种情况之一发生:
我认为通过将用户名添加到git存储库url(例如username@git.domain.ext/repo/name.git)可以部分缓解此问题,但这仅适用于我们每个用户拥有个人开发环境的开始阶段.登台环境需要多人访问,因此我们无法对用户名进行硬编码.在我们完成初始开发并且项目已经投入使用之后,我们清理了开发环境,因为我们没有无限的空间.如果我们在清理个人开发环境后需要进行更改,我们通常会使用暂存环境来执行此操作,这会导致同样的问题发生.
该git config --global credential.helper命令导致凭据在服务器范围内存储.降低超时只会有很大帮助.我们可以缓存每个开发环境的凭据吗?