Tag: 安全

从命令行忽略“安全警告”运行脚本

我试图从我信任的共享文件夹执行脚本: PowerShell -file "\\server\scripts\my.ps1" 但我得到安全警告,必须按“R”继续 安全警告仅运行您信任的脚本。 虽然来自Internet的脚本可能有用,但此脚本可能会损害您的计算机。 你想运行\ server \ scripts \ my.ps1吗? [D]不运行[R]运行一次[S]暂停[?]帮助(默认为“D”):d 我可以忽略这个警告吗? 我想要的伪代码是: PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"

将httpredirect到https是一个坏主意?

我正在阅读这个页面 ,它说,如果一个站点是SSL,并且用户试图通过普通的http访问它,那么应用程序就不应该把用户redirect到https。 它应该阻止他。 有人可以validation这个的有效性吗? 这听起来不是一个好主意,我想知道将用户转到https的真正风险是什么。 似乎没有技术原因,只是这是教育用户的好方法。 禁用对域的HTTP访问,甚至不redirect或链接到SSL。 只要通知用户这个网站不能通过HTTP访问,他们必须通过SSL访问它。 这是针对MITM和phising攻击的最佳做法。 这样,你的用户将被教育,应用程序永远不能通过HTTP访问,当他们遇到一个电话或MITM攻击,他们会知道一些错误。 保护您的应用程序免受MITM攻击和networking攻击的最好方法之一是教育您的用户。

什么是最好的“忘记我的密码”的方法?

可能重复: 忘记密码:实现忘记密码function的最佳方法是什么? 我正在编程一个社区网站。 我想build立一个“忘记我的密码”function。 环顾不同的网站,我发现他们采用三种select之一 : 向用户发送一封电子邮件,指向一个唯一的,隐藏的URL ,允许他更改密码(Gmail和亚马逊) 向用户发送一封新的随机生成的密码 (Wordpress) 发送用户当前的密码 (www.teach12.com) 选项#3对用户来说似乎是最方便的,但是由于我将密码保存为MD5哈希值,因此MD5是不可逆的 ,所以我没有看到选项#3是否可用。 这似乎也是不安全的select,因为这意味着网站必须以明文保存密码,至less明文密码通过不安全的电子邮件发送给用户。 还是我在这里错过了什么? 所以如果我不能做选项#1, 选项#2似乎是最简单的编程,因为我只需要更改用户的密码,并将其发送给他。 尽pipe这样做有些不安全,因为您必须通过不安全的电子邮件传输活动密码。 然而,这也可能被麻烦制造者滥用,通过随机input电子邮件和不断更改各种用户的密码来纠缠用户。 选项#1似乎是最安全的,但需要一些额外的编程来处理隐藏的URL过期等,但似乎是大网站使用。 你有什么经验使用/编程这些不同的选项? 有没有我错过的select?

运行“sudo pip”有什么风险?

偶尔我会遇到意见或回应 ,强调在sudo下运行pip是“错误的”或“不好的”,但有些情况(包括我设置了一堆工具的方式)要么简单得多,要么甚至更简单必须以这种方式运行。 在sudo下运行pip有什么风险? 请注意,这个问题与这个问题不一样,尽pipe标题没有提供关于风险的信息。 这也不是一个关于如何避免使用sudo ,而是关于为什么要使用sudo 。

我如何在我的login密码中实现salt?

我想在我的login系统中实现一个salt,但是对于这个工作如何工作有些困惑。 我无法理解它背后的逻辑。 我知道md5是一种单向algorithm,我所遇到的所有function似乎都把所有东西都混合在一起。 如果是这样,那么如何取回密码进行比较呢? 我最大的问题是,如何腌制密码的用户密码比安全? 如果一个数据库被破坏,那么散列和salt一起就在数据库中。 这不是黑客所需要的吗? 另外还有一位开发者说: “确保你的盐和algorithm与数据库分开存储” 我想将salt存储在数据库中。 这真的是个问题吗? 我正在寻求一些帮助来理解这是如何工作的,以及最佳实践可能是什么。 任何帮助是极大的赞赏。 编辑:我想感谢大家的回应和想法。 即使我现在可能更困惑,对我来说,这确实是一个学习的经验。 再次感谢你们。

是时候()好盐吗?

我正在看一些我自己写的代码。 代码尝试使用SHA512散列密码,并使用time()作为salt。 是time()太简单盐或为此代码安全吗? 感谢您的答复和评论。 我将在这里为新读者总结一下: 每个用户的盐应该是不同的,所以如果两个用户同时注册,他们的盐将不是唯一的。 这是一个问题,但不是一个大问题。 但盐不应该与用户有任何关系,所以time()不是一个好的盐。 “ 使用一种随机的,均匀分布的,高熵的盐。 ” – 这是一口,所以什么样的代码可能会产生一个random, evenly distributed, high entropy盐? 好的,那我怎么样用一个32字符长的随机stringreplacetime()。 随机string可以通过在一组字母字符上循环32次而生成。 这听起来不错吗?

在ASP.NET MVC Beta中通过IP地址限制对特定控制器的访问

我有一个包含AdminController类的ASP.NET MVC项目 – 给我URls喜欢http:// myserver / admin / AddCustomer , http:// myserver / Admin / ListCustomers等 我想configuration服务器/应用程序,以便包含/pipe理员的 URI只能从192.168.0.0/24networking(即我们的局域网) 我想限制这个控制器只能从某些IP地址访问。 在WebForms下,/ admin /是一个物理文件夹,我可以在IIS中进行限制…但是使用MVC,当然没有物理文件夹。 这是可以使用web.config或属性,还是我需要拦截HTTP请求来实现这一目标?

在安全页面上查找所有不安全的内容

查找HTTPS页面请求的所有非HTTPS URL列表的最有效方法是什么? 如果这种安全违规发生,每个浏览器警告用户,但我找不到一个简单的方法来find确切的URL导致违规。 到目前为止我发现的最简单的方法就是使用Firefox,但即使如此,它仍然不是很方便。 首先,我可以右键单击,select“查看页面信息”,单击“媒体”选项卡,然后滚动浏览URL列表。 但是,这似乎只列出图像文件,不包括CSS或JS,也可能导致错误。 对于这些,我必须使用Firebug扩展,selectnetworking选项卡,并手动将鼠标hover在每个项目上,以查看整个URL。 不幸的是,如果你有几十个媒体文件,这可能需要一段时间。 有没有更好的办法?

不应该Android AccountManager在每个App / UID基础上存储OAuth令牌吗?

Android的AccountManager似乎为具有不同UID的应用获取相同的caching身份validation令牌 – 这是安全的吗? 它似乎与OAuth2不兼容,因为访问令牌不应该在不同的客户端之间共享。 背景/上下文 我正在构build一个Android应用程序,该应用程序使用OAuth2将REST API请求authentication/授权给我的服务器,这是一个OAuth2提供程序。 由于该应用程序是“官方”应用程序(而不是第三方应用程序),因此它被视为受信任的OAuth2客户端,所以我正在使用资源所有者密码stream获取OAuth2令牌:用户(资源所有者)将他的用户名/密码input到应用程序中,然后将其客户端ID和客户端密码连同用户凭证一起发送到我的服务器的OAuth2令牌端点,以交换可用于进行API调用的访问令牌,当刷新令牌到期时用于获取新的访问令牌。 理由是在设备上存储刷新令牌比用户的密码更安全。 我正在使用AccountManagerpipe理设备上的帐户和关联的访问令牌。 由于我提供了自己的OAuth2提供程序,因此我通过扩展AbstractAccountAuthenticator和其他必需的组件来创build自己的自定义帐户types,如本Android Dev Guide中所述,并在SampleSyncAdapter示例项目中演示。 我可以在我的应用程序中成功添加自定义types的帐户,并通过“帐户和同步”Android设置屏幕pipe理这些帐户。 问题 但是,我关心的是AccountManagercaching和发布授权令牌的方式,具体来说, 对于给定的账户types和令牌types , 同一个授权令牌似乎可以被用户授权访问的任何应用访问。 要通过AccountManager获得授权令牌,必须调用AccountManager.getAuthToken() ,除其他外,传递为其获取授权令牌和期望的authTokenType的Account实例。 如果指定帐户和authTokenType存在authentication令牌,并且用户授予对已经作出authentication令牌请求的应用的访问(通过授予“访问请求”屏幕)(在请求应用的UID不匹配的情况下authentication者的UID),那么令牌被返回。 如果我的解释缺乏, 这个有用的博客条目解释得非常清楚。 基于这篇文章,在考察了AccountManager和AccountManagerService (一个为AccountManager负责的内部类)的来源之后,看起来每个authTokenType /账户组合只有一个授权令牌存储。 所以, 如果恶意应用程序知道我的身份validation器使用的帐户types和authTokenType,则可能调用AccountManager.getAuthToken()来访问我的应用程序存储的OAuth2令牌,假设用户授予访问恶意应用程序。 对我来说,问题是AccountManager的默认caching实现build立在一个范例上,如果我们要分层的OAuth2authentication/授权上下文,它会认为电话/设备是服务/资源提供者的单个OAuth2客户端。 然而,对我来说有意义的范例是每个应用程序/ UID应被视为自己的OAuth2客户端。 当我的OAuth2提供程序发出访问令牌时,会为该特定应用程序发出访问令牌,该令牌已发送正确的客户端ID和客户端密钥,而不是设备上的所有应用程序。 例如,用户可能同时拥有我的官方应用程序(称为应用程序客户端A)和使用我的API(称为应用程序客户端B)的“许可”第三方应用程序。 对于官方客户端A,我的OAuth2提供者可能会发出一个“超级”types/范围令牌,授权访问我的API的公共和私有片段,而对于第三方客户端B,我的提供者可能会颁发“受限”types/范围令牌,只允许访问公共API调用。 应用程序客户端B不可能获得应用程序客户端A的访问令牌,目前的AccountManager / AccountManagerService实现似乎允许。 因为,即使用户向客户端A的超级令牌授予客户端B的授权,事实仍然是,我的OAuth2提供者仅仅意图将该令牌授予给客户端A. 我在这里忽略了什么? 我认为应该以每个应用程序/ UID为基础(每个应用程序是一个独立的客户端)发布授权令牌,理性/实用,或者是每个设备的授权令牌(每个设备是客户端)的标准/接受实践? 或者,在我对AccountManager / AccountManagerService周围的代码/安全性限制的理解中是否存在一些缺陷,使得这个漏洞实际上不存在? 我已经使用AccountManager和我的自定义身份validation器testing了上述客户端A /客户端Bscheme,而我的testing客户端应用程序B具有不同的包范围和UID,能够获得我的服务器为我发放的身份validation令牌testing客户端应用程序A通过传入相同的authTokenType (在此期间,我被提示“访问请求”授予屏幕,我批准,因为我是一个用户,因此无能为力)… 可能的解决scheme 一个。 “秘密”authTokenType 为了获得auth令牌,必须知道authTokenType ; 应该将authTokenType作为一种客户端秘密来处理,使得只有那些知道秘密令牌types的“已授权”的客户端应用程序才能获得给定秘密令牌types的令牌? 这似乎不是很安全; […]

EXECUTE权限在用户定义的表types上被拒绝?

我有一个关于SQL Server 2008中的用户定义表types的问题。 对于需要其中一个ASP.NET应用程序,我们在SQL Server 2008上定义了我们自己的表types,将它们用作存储过程中的参数(当在ASP.NET应用程序中执行sql命令时,我们将DataTable对象作为parameter passing给存储过程看这里的例子 ) 问题是,当我们从ASP.NET运行Sql命令(执行存储过程)时,我们得到一个错误: EXECUTE权限在对象“ourTableType”,数据库“ourDatabase”,模式“ourSchema”上被拒绝。 为什么? 为什么我们需要为用户定义的表types设置权限? 为什么仅仅在使用它的存储过程上设置权限是不够的? 如果我们必须设置它,为什么没有EXECUTE权限types设置属性窗口什么(我只能看到Control , References ,取得Take Ownership , View Definition )? 我也不明白的是,在属性窗口中设置权限Control解决了问题,存储过程运行没有问题。