我有一个网站注册页面,我正在尝试编制一份我需要做的保护它的列表.如果您知道攻击,请将其命名,并简要描述一下,并简要说明其解决方案.所有有用的答案/评论都会获得投票.
以下是我到目前为止的想法:(并添加其他人的建议.Phew,添加其他输入结果是很多工作,但请保持他们的到来,我会继续在这里添加)
SQL注入:来自用户输入日期.解决方案:预备报表.
[AviD]"存储过程还提供额外的好处(上面准备的语句),例如对数据库的最小特权的能力"
好点,请解释一下.我认为存储过程与准备好的语句相同.我的意思是那些语句是bindParam变量.他们不一样吗?
在进入db之前不对密码进行哈希处理.解决方案:哈希密码.
[AviD]"重新散列,密码需要一个盐(在散列之前添加密码的随机值),以防止彩虹表攻击和同一密码攻击."
"每个用户使用的盐应该不同."
好的,我对此有疑问:我知道盐应该是随机的,但也是独一无二的.我们如何建立独特的部分来对抗同一密码攻击?我一直在读这个,但还没有得到明确的答案.
[Inshallah]"如果你使用长盐,比如16个字符用于SHA-256(5美元)那么你真的不需要验证它的独特性"
[Inshallah]"实际上,我认为是否存在一些冲突并不重要.盐只是为了防止查表,所以即使有2个盐也会是(小)增益,即使有我们不是在谈论一个绝对不能重复的加密随机数.但我不是一个密码分析者"
好点,但有人在这一点上有免责声明吗?
Dos攻击?!(我猜这也适用于注册表格)
[Pascal Thivent]"在提交敏感数据(如密码)时使用HTTP." "对于中间人攻击,只要使用足够的密码套件"
这里提到的"适当的密码套件"是什么?
[Koosha]"在客户端使用MD5和Javascript进行submition之前使用HTTP或加密密码."
我不同意MD5并且不喜欢在客户端加密,对我来说毫无意义.但欢迎其他投入.
[Dan Atkinson]排除某些用户名以防止与具有相同名称的现有页面发生冲突(请参阅原始帖子以获取完整答案和解释)
[Koosha]"限制用户名允许的字符.例如字母和数字,短划线( - )和点(.)"
请详细说明原因?
[Stu42]"使用验证码,以便机器人无法自动创建多个帐户"
[AviD]"有比验证码更好的解决方案,但对于低价值的网站来说,它已经足够好了."
@AviD,请举一个例子?
[rasputin]"使用电子邮件验证"
[安德鲁和epochwolf] xss攻击
虽然我不同意安德鲁和epochwolf简单过滤<和>或转换
Pascal Thive.. 6
使用HTTPS,即HTTP和SSL的组合,在提交密码等敏感数据时提供服务器的加密和安全标识.HTTPS的主要思想是在不安全的网络上创建安全通道.这可确保对窃听者和中间人攻击提供合理保护,前提是使用了足够的密码套件并且服务器证书已经过验证和信任.
使用HTTPS,即HTTP和SSL的组合,在提交密码等敏感数据时提供服务器的加密和安全标识.HTTPS的主要思想是在不安全的网络上创建安全通道.这可确保对窃听者和中间人攻击提供合理保护,前提是使用了足够的密码套件并且服务器证书已经过验证和信任.