为什么Redis连接在没有指定凭据的情况下从C#开始工作?我有这个代码工作并连接到远程服务器。我的客户端机器是Windows,REMOTE-MACHINE是Linux服务器。这是否意味着局域网中的任何人都可以连接?
public class RedisConnectorHelper
{
static RedisConnectorHelper()
{
RedisConnectorHelper.lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect("REMOTE-MACHINE");
});
}
private static Lazy<ConnectionMultiplexer> lazyConnection;
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
}
答案 0 :(得分:2)
Redis的默认行为允许它接受连接而不指定任何凭据来执行此操作。如果要更改此设置,请修改Redis .conf文件,使其更符合您的喜好。至于你的局域网问题,我不知道你的网络是如何配置的,所以我真的无法为你解答。
答案 1 :(得分:1)
来自Redis Security页面:
Redis旨在由受信任环境中的受信任客户端访问。这意味着通常不会将Redis实例直接暴露给Internet,或者通常是不受信任的客户端可以直接访问Redis TCP端口或UNIX套接字的环境。
提供了一些使用密码存储在配置文件中的非常基本的身份验证,但正如文档所述,it provides a tiny layer of authentication
。
安全性必须在网络级别实施,包括防火墙,端口阻止,SSL。 Redis本身不提供SSL,但您可以使用SSL代理,例如Amazon和Azure等云提供商,将SSL代理放在其集群前面。
像StackExchange.Redis这样的Redis客户支持SSL,例如在connection string中设置ssl=true