Tag: 安全

击败扑克机器人

有一个新的开放源码扑克机器人叫做PokerPirate 。 我感兴趣的任何创造性的方式,在networking应用程序可以检测/挫败扑克机器人。 (这是一个纯粹的学术讨论,与PokerPirate的写法一样。)

安全上下文中的主体与用户与主体的含义是什么?

在安全框架的背景下,一些术语通常会出现主体 , 用户和主体 ,我无法find明确的定义和差异。 那么,这些术语究竟意味着什么,为什么需要这些主体和主体的区别呢?

“忘记密码”实施的最佳途径?

我正在寻找实施“忘记密码”function的最佳方法。 我有两个想法: 当用户点击忘记密码时,用户需要input用户名,电子邮件,可能是出生date或姓氏。 然后一个带有临时密码的邮件将被发送到用户的电子邮件帐户。 用户使用临时密码login并重置他的密码。 类似的,但电子邮件将包含一个链接,让用户重置他的密码。 或者任何人都可以build议我一个更好和更安全的方式 我也想发送临时密码或链接,强制用户在24小时内重置密码,否则临时密码或链接将不可用。 怎么做?

如何将SecureString转换为System.String?

所有关于通过创build一个System.String来取消安全SecureString的保留 ,如何完成? 如何将一个普通的System.Security.SecureString转换为System.String? 我相信很多熟悉SecureString的人都会回应说,绝对不应该将SecureString转换为普通的.NETstring,因为它会去除所有的安全保护。 我知道 但是现在我的程序用普通的string来处理所有事情,而且我正在尝试增强它的安全性,尽pipe我将要使用一个返回SecureString的API,我并不想用它来提高我的安全性。 我知道Marshal.SecureStringToBSTR,但我不知道如何把BSTR,并使一个System.String出它。 对于那些可能要求知道为什么我会想要这样做的人,那么,我正在从用户那里获取一个密码,并将其提交为HTML表单POST,以将用户login到网站。 所以…这确实需要使用托pipe的,未encryption的缓冲区来完成。 如果我甚至可以访问非托pipe的,未encryption的缓冲区,我想我可以在networkingstream上逐字节地写数据stream,并希望能够保证整个密码的安全。 我希望至less有一个这样的情况的答案。

为什么不使用HTTPS的一切?

如果我正在build立一个服务器,并且拥有SSL证书,那么为什么我不会在整个站点上使用HTTPS,而只是为了购买/login? 我认为只需要encryption整个网站,并完全保护用户就可以了。 这样可以防止诸如确定必须保证什么的问题,因为一切都是这样,对用户来说并不是真正的不便。 如果我已经使用HTTPS作为网站的一部分,为什么我不想在整个网站上使用它? 这是一个相关的问题: 为什么https只用于login? ,但答案并不理想。 答案假定您无法将https应用于整个网站。

将.pfx转换为.cer

是否可以将.pfx(个人信息交换)文件转换为.cer(安全证书)文件? 除非我错了,不是.cer以某种方式embedded.pfx内? 如果可能的话,我想要一些方法来提取它。

我应该在密码上施加最大长度吗?

我可以理解,在密码上加上一个最小长度是很有意义的(为了节省用户的时间),但是我的银行要求密码长度在6到8个字符之间,我开始怀疑… 难道这不会让暴力攻击更容易吗? (坏) 这是否意味着我的密码未encryption存储? (坏) 如果有人(希望)为他们工作的一些优秀的IT安全专家正在施加最大的密码长度,我应该考虑做类似的事情吗? 这有什么优点/缺点?

如何解决缓慢的Java SecureRandom?

如果你想在Java中使用密码强的随机数,你可以使用SecureRandom 。 不幸的是, SecureRandom可能非常慢。 如果它在Linux上使用/dev/random ,它会阻塞等待足够的熵build立。 你如何避免performance的惩罚? 有没有人使用罕见的math作为解决这个问题? 有人可以证实这个性能问题已经在JDK 6中解决了吗?

我可以通过用单引号转义单引号和周围的用户input来防止SQL注入吗?

我意识到参数化的SQL查询是构build包含用户input的查询时清理用户input的最佳方式,但是我不知道用户input和转义任何单引号以及用单引号包围整个string是什么问题。 代码如下: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" 用户input的任何单引号被replace为双单引号,这就消除了用户结束string的能力,所以他们可以input的任何内容,例如分号,百分号等都将是string的一部分,而不是实际上是作为命令的一部分执行的。 我们正在使用Microsoft SQL Server 2000,为此我认为单引号是唯一的string分隔符,也是唯一的方法来转义string分隔符,所以没有办法执行用户input的任何内容。 我看不出有什么办法对此发起SQL注入攻击,但是我意识到,如果这看起来像其他人可能已经想到的那样是无懈可击的,这将是常见的做法。 我的问题是:这个代码有什么问题? 有没有人知道通过这种消毒技术获得SQL注入攻击的方法? 使用这种技术的示例用户input将非常有帮助。 提前致谢。 更新: 感谢大家的回答; 我的研究中发现的所有信息几乎都出现在这个页面上,这表明那些忙于忙碌的日子里帮助我解决这个问题的人们的聪明才智和技巧。 我还没有接受任何答案的原因是,我仍然不知道有什么办法有效地发起这个代码的SQL注入攻击。 有些人build议反斜杠会转义一个单引号,而让另一个结束这个string,这样string的其余部分就会作为SQL命令的一部分被执行,而且我意识到这个方法可以将SQL注入一个mySQL数据库,但在MS SQL 2000中,唯一可以find的方法是转换单引号。 反斜杠不会这样做。 除非有办法停止单引号的转义,否则用户input的其余部分都不会被执行,因为它将被全部视为一个连续的string。 我明白,有更好的方法来消毒input,但我真的更感兴趣,了解为什么我上面提供的方法将无法正常工作。 如果有人知道任何具体的方式来对这个消毒方法进行SQL注入攻击,我很想看到它。

连接数据库时访问被拒绝

我正在使用SQL Server 2008开发者版本。 我试图附加AdventureWorks2008数据库。 当我尝试附加时,我收到“访问被拒绝”的错误。 根据事件日志,它来自O / S: 打开失败:无法为文件号0打开文件D:\ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf。操作系统错误:5(访问被拒绝。)。 我以为“NTFS问题”,但系统(和我)已修改访问这两个文件。 我发现我可以成功地连接数据库,如果我login为sa,但我的用户帐户将无法正常工作。 我是我的机器上的本地pipe理员组的成员,而且我在SQL Server实例中的sysadminsangular色中。 任何想法,为什么我必须login为SA?