Tag: 安全

安全分发NodeJS应用程序

什么: NodeJS应用程序可以分布为二进制? 即。 你通过V8编译.js应用程序到它的本地二进制文件,并将二进制文件分发给客户端? (如果你有访问NodeJS服务器的权限),或者正在缩小代码,你可以做什么? 原因:我们在NodeJS中为客户端构build了服务器端应用程序,这些客户端往往要托pipe在客户端的服务器上。 分发源代码意味着客户可以轻易地窃取我们的解决scheme,并停止支付许可费用。 这样就可以在不知情的情况下轻松地对应用程序进行逆向工程或重用。

创build一个可变的java.lang.String

Java String是不可改变的常识。 不可变的string是Java自成立以来的重要补充。 不变性允许快速访问和大量的优化,与C风格的string相比,显着减less错误,并有助于实施安全模型。 有可能创build一个可变的不使用黑客,即 java.lang.refect sun.misc.Unsafe 引导类加载器中的类 JNI(或JNA,因为它需要JNI) 但是,在普通的Java中是否可以这样做,以便随时可以修改string? 问题是如何 ?

JSON安全最佳实践?

在研究JSON和XML的问题的同时,我遇到了这个问题 。 现在,selectJSON的原因之一就是在Javascript中易于转换,即使用eval() 。 从安全的angular度来看,这立即引起了我的问题。 因此,我开始对JSON的安全性方面进行一些研究,并在这篇博文中讨论JSON如何不如人们所想的那样安全 。 这部分突出了: 更新:如果你正在做JSON 100%,那么你将只有顶层的对象。 数组,string,数字等都将被包装。 一个JSON对象然后将不能eval(),因为JavaScript解释器会认为它正在查看一个块而不是一个对象。 这对防范这些攻击有很长的路要走,但最好还是用不可预知的URL来保护您的安全数据。 好吧,这是一个很好的规则:顶层的JSON对象应该始终是对象而不是数组,数字或string。 听起来对我来说是一个很好的规则。 当涉及到JSON和AJAX相关的安全性时,还有什么可以做或者避免的吗? 上面引用的最后部分提到了不可预测的URL。 有没有人有更多的信息,特别是你如何在PHP中做到这一点? 在Java中,我比PHP更有经验,而且在Java中很容易(因为你可以将一系列的URL映射到一个servlet),而我所做的所有PHP都将一个URL映射到PHP脚本。 另外,您究竟如何使用不可预知的URL来提高安全性?

防止蛮力login网站

作为对最近的Twitter劫持和杰夫的字典攻击的post的回应,什么是保护您的网站免受蛮力login攻击的最佳方式? 杰夫的postbuild议,对每个尝试login的延迟时间会有所增加,并且评论中的build议是在第二次失败尝试后添加validation码。 这两个看起来都是好主意,但你怎么知道它是什么“尝试数字”? 您不能依靠会话ID(因为攻击者每次都可以更改)或IP地址(更好,但易受僵尸networking攻击)。 简单地logging用户名可以使用延迟方法locking一个合法用户(或者至less使他们的login过程非常缓慢)。 思考? build议?

SecureString在C#应用程序中是否实用?

如果我的假设在这里是错误的,请随时纠正我,但让我解释我为什么问。 采取从MSDN,一个SecureString : 代表应该保密的文字。 文本在使用时被隐私encryption,不再需要时从计算机内存中删除。 我得到这个,通过System.String存储密码或其他私人信息在SecureString是完全有意义的,因为你可以控制它是如何以及何时被存储在内存中的,因为System.String : 是不可变的,当不再需要时,不能以编程方式安排垃圾收集; 也就是说,实例在创build后是只读的,并且不可能预测实例何时从计算机内存中删除。 因此,如果String对象包含密码,信用卡号码或个人数据等敏感信息,则在使用该信息之后可能会泄露信息,因为您的应用程序无法从计算机内存中删除数据。 但是,对于GUI应用程序(例如,ssh客户端), 必须从 System.String 构build SecureString 。 所有的文本控件都使用string作为其基础数据types 。 所以,这意味着每当用户按下某个键时,即使使用密码掩码,旧的string也会被丢弃,并build立一个新的string来表示文本框内的值。 而且我们无法控制这些值何时或是否从内存中被丢弃 。 现在是login到服务器的时候了。 你猜怎么了? 您需要通过连接传递string进行身份validation 。 所以让我们把我们的SecureString转换成一个System.String ….现在我们在堆上有一个string,没有办法强制它通过垃圾回收(或写0到它的缓冲区)。 我的观点是 :不pipe你做什么,在某个地方, SecureString 将被转换成一个System.String ,这意味着它至less会在堆上存在(没有任何垃圾收集的保证)。 我的观点并不是 :是否有办法避免发送一个string到一个SSH连接,或者绕过一个控制存储一个string(做一个自定义控件)。 对于这个问题,你可以用“login表单”,“registry单”,“付款表单”,“食品 – 你会喂小孩但不是你的孩子的forms”代替“ssh连接”。等等 那么,在什么时候使用SecureString实际上变得实用? 是否值得花费额外的开发时间来彻底根除System.String对象的使用? 整个SecureString是简单地减less一个System.String在堆上的时间(减less移动到物理交换文件的风险)? 如果攻击者已经有了堆检查的手段,那么他很有可能(A)已经有了读击键的方法,或者(B)已经物理地拥有了机器 …所以使用SecureString防止他进入数据呢? 这只是“通过默默无闻的安全”? 对不起,如果我把问题放在太厚的地方,好奇心就会越来越好。 随时回答我的任何或所有问题(或告诉我,我的假设是完全错误的)。 🙂

如何从证书和私钥创build.pfx文件?

我需要.pfx文件来在IIS上的网站上安装https。 我有两个单独的文件:证书(.cer或pem)和私钥(.crt),但IIS只接受.pfx文件。 我显然安装了证书,它在证书pipe理器(mmc)中是可用的,但是当我select证书导出向导时,我不能selectPFX格式(它是灰色的) 有没有什么工具可以做到这一点,或C#的例子做这个编程?

redirect到endResponse为真的VS CompleteRequest和安全线程的页面

根据这些问题和答案 ,我想问一下什么是redirect的正确方法。 使用redirect(url,endResponse)的默认方式是抛出ThreadAbortException因为调用endResponse=true调用End()方法,所以,如果你在try / catch块中使用它,这个exception显示在那里 ,被假定为错误,但实际上用户尝试通过停止其余的页面处理来redirect到页面。 其他可能的方式是通过HttpContext.Current.ApplicationInstance.CompleteRequest();来调用Redirect(url, endResponse)并使用endResponse=false HttpContext.Current.ApplicationInstance.CompleteRequest(); 通过使用你没有得到任何例外。 所以问题是什么是更好的使用和为什么。

Python 3.3中的散列函数在会话之间返回不同的结果

我已经在Python 3.3中实现了一个BloomFilter,每次会话都得到不同的结果。 深入研究这个奇怪的行为使我得到了内部的hash()函数 – 它为每个会话返回同一个string的不同散列值。 例: >>> hash("235") -310569535015251310 —–打开一个新的python控制台—– >>> hash("235") -1900164331622581997 为什么发生这种情况? 为什么这是有用的?

在HTTPS上设置站点后,子操作不允许执行redirect操作

我得到下面的错误: Child actions are not allowed to perform redirect actions. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Child actions are not allowed to perform redirect actions. Source Error: […]

安全删除内存中的密码(Python)

如何将用户input的密码存储在内存中,并在不再需要时将其安全地擦除? 详细来说,目前我们有以下代码: username = raw_input('User name: ') password = getpass.getpass() mail = imaplib.IMAP4(MAIL_HOST) mail.login(username, password) 在调用login方法之后,我们需要做些什么来填充包含带有乱码的密码的内存区域,以便有人无法通过执行核心转储来恢复密码? 有一个类似的问题,但是它是用Java编写的,解决scheme使用字符数组: 在创build帐户时,如何在内存中安全地存储密码? 这可以在Python中完成吗?