将subversion存储库的一个分支作为新主干的最佳方法是什么?
对整个系统进行了重大改写:事物已被移动,重写,替换,删除,重命名等.重写的代码已经过测试并准备替换旧的主干.
基本上,旧主线(Trunk 5)被标记并将在此处结束.重写的分支(分支6)将成为新的主线(Trunk 7):
Trunk(1) --> Trunk(2) --> Trunk(5) --> × +--> new Trunk(7) \ \ | fork merge ??? \ \ | +--> Branch(3) --> Branch(4) --> Branch(6) --+
来自旧"主干"的所有持续变化已经包含在"重写分支"中
我怎样才能做到这一点?
有哪些选项可以检测不希望被检测到的网页抓取工具?
(我知道列表检测技术将允许智能隐形爬虫程序员制作出更好的蜘蛛,但我认为无论如何我们都无法阻止智能隐形爬行器,只会犯错误.)
我不是在谈论像googlebot和Yahoo!这样的好爬虫.啜食.我认为机器人很好,如果它:
我正在谈论坏的爬虫,躲在普通用户代理后面,使用我的带宽,从不给我任何回报.
有一些陷阱可以构建更新列表(谢谢Chris,gs):
一些陷阱将由"好"和"坏"机器人触发.你可以把它们与白名单结合起来:
robots.txt
?robots.txt
另一个重要的事情是:
请考虑盲人使用屏幕阅读器:给人们一种联系方式,或解决(非图像)Captcha继续浏览.
有哪些方法可以自动检测试图将自己屏蔽为正常人类访问者的网络爬虫.
更新
问题不是:我如何捕获每个爬虫.问题是:如何最大限度地发现爬虫的机会.
有些蜘蛛真的很好,实际上解析和理解html,xhtml,css javascript,VB脚本等......
我没有幻想:我无法击败它们.
然而,你会惊讶于一些爬虫是多么愚蠢.愚蠢的最好例子(在我看来)是:在请求之前将所有URL强制转换为小写.
然后有一大堆爬虫只是"不够好",以避免各种陷门.
' hello, world
'通常是任何编程语言的第一个例子.我一直想知道这句话的来源以及首次使用的地方.
我曾经被告知这是第一个在电脑屏幕上显示的句子,但我找不到任何参考.
所以我的问题是:
使用' hello, world
'作为计算机语言的第一个例子的做法来自哪里?
它最初在哪里使用?
更新
尽管答案非常有趣,但我应该注意到我已阅读维基百科的文章.它回答有关文献中第一次使用的问题,而是"何时不回答hello world
"第一次使用.
因此,我认为可以安全地得出结论,这不是第一个在计算机屏幕上显示的句子,并且没有关于它何时首次使用的记录?
由于这个问题相当受欢迎,我认为给它更新很有用.
让我强调AviD给出的正确答案:
您不应该在cookie中存储任何需要加密的数据.相反,在cookie中存储一个大小合适的(128位/ 16字节)随机密钥,并将您想要保密的信息存储在服务器上,由cookie的密钥标识.
我正在寻找有关加密cookie的"最佳"加密算法的信息.
我有以下要求:
必须快速
加密和解密数据(几乎)每个请求都要完成
它将在小数据集上运行,通常是大约100个字符或更少的字符串
它必须是安全的,但它不像我们正在保证银行交易
我们需要能够解密信息,以便SHA1等出来.
现在我已经读过Blowfish快速而安全,我读过AES快速而安全.Blowfish的块大小较小.
我认为这两种算法都提供了足够的安全性?所以速度将成为决定性因素.但我真的不知道这些算法是否适合小字符串,以及是否有更适合加密cookie的算法.
所以我的问题是:
什么加密算法最适合加密cookie数据?
更新
更准确地说,我们要加密2个cookie:一个包含会话信息,另一个包含"记住我"信息.
该平台是PHP上作为VPS上的Linux上的apache模块.
更新2
我同意cletus,将任何信息存储在cookie中是不安全的.
但是,我们需要实现"记住我"功能.可接受的方法是设置cookie.如果客户端提供此cookie,则允许他或她以(几乎)相同的权限访问系统,就像他/她提供有效的用户名密码组合一样.
因此,我们至少要加密cookie中的所有数据,以便:
a)恶意用户无法读取其内容;
b)恶意用户无法制作自己的cookie或篡改它.
(在我们对它做任何事情之前,对所有来自cookie的数据进行消毒并检查其有效性,但这是另一个故事)
会话cookie不再包含sessionId/timestamp.它可以在没有加密的情况下使用,但我认为加密它没什么害处?(计算时间除外).
因此,鉴于我们必须在cookie中存储一些数据,加密它的最佳方法是什么?
更新3
对此问题的回答使我重新考虑所选择的方法.我确实可以做同样的事情而不需要加密.我不应该加密数据,而应该只发送没有上下文而无法猜到的数据.
然而,我也不知所措:
我认为加密使我们能够将数据发送到BigBadWorld™,并且仍然(相当)确定没有人可以阅读或篡改它......
不是全部加密点?
但下面的反应推动:不要相信加密来实现安全性.
我错过了什么?
如何从继承的方法获取当前类的路径?
我有以下内容:
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
return dirname(__FILE__);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
和
<?php // file: /childDir/class.php
class Child extends Parent {
public function __construct() {
echo $this->getDir();
}
}
$tmp = new Child(); // output: '/parentDir'
?>
Run Code Online (Sandbox Code Playgroud)
该__FILE__
常数总是指向它在文件的源文件,无论继承.
我想获取派生类的路径名称.
这样做有什么优雅的方式吗?
我可以做一些事情,$this->getDir(__FILE__);
但这意味着我必须经常重复自己.我正在寻找一种方法,如果可能的话,将所有逻辑放在父类中.
更新:
接受的解决方案(由Palantir提供):
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
$reflector = new ReflectionClass(get_class($this));
return dirname($reflector->getFileName());
}
}
?>
Run Code Online (Sandbox Code Playgroud) 我知道最终它无法完成.
但是,有哪些选择:
a)限制人员创建多个账户的选项,
b)增加检测多个账户/人的机会
对于类似博客的Web服务?
(人们可以注册自己的博客)
更新:
我认为'限制选项'已得到很好的回答.(没有可靠的方法,但我们可以提高标准)
但是,我仍然想知道有哪些其他选项来检测多个帐户?
目前,我在InnoDB表中将图像(最大6MB)存储为BLOB.随着数据量的增长,夜间备份越来越慢,阻碍了正常的性能.
因此,二进制数据需要转到文件系统.(指向文件的指针将保存在数据库中.)
数据具有树关系:
- main site
- user_0
- album_0
- album_1
- album_n
- user_1
- user_n
etc...
Run Code Online (Sandbox Code Playgroud)
现在我希望数据通过目录结构均匀分布.我该怎么做到这一点?
我想我可以尝试MD5('userId, albumId, imageId');
切片结果字符串以获取我的目录路径:
/var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg
这将允许我将第一个字符映射到服务器,并将目录结构均匀分布在多个服务器上.
然而,这不会保持每个用户组织的图像,可能将图像分散在多个服务器上的1个专辑中.
我的问题是:
在保持用户/专辑数据在一起的同时,以平衡的方式将图像数据存储在文件系统中的最佳方法是什么?
我在想正确的方向吗?或者这是完全做事的错误方式?
更新:
我将为md5(user_id)
最高级别的拆分进行字符串切片.然后将所有用户数据放在同一个存储桶中.这将确保数据的均匀分布,同时保持用户数据紧密存储在一起.
/var - imageStorage - f/347e/013b - f347e013bc04251cf985f7ad0daa987d - 0 - album1_10 - picture_1.jpeg - 1 - album1_1 - picture_2.jpeg - picture_3.jpeg - album1_11 - picture_n.jpeg - n - album1_n
我想我会使用从后面拆分的albumId(我喜欢这个想法!),以保持每个目录的专辑数量更小(尽管大多数用户不需要).
谢谢!
有谁知道如何获得paypal的货币汇率?
我们有自定义购物车,并使用Paypal(网站付款标准)来处理付款.我们的"本国"货币是欧元,但我们希望向客户提供以不同货币(美元,加元,澳元和英镑)支付的选项.
PayPal提供以下选项:
a)在结账时自动将我们的欧元报价转换为美元
b)结账直接在USD结算
选项a):
有选项b)
所以我的问题是:
有人知道如何获得PayPal汇率吗?
或者
有人知道如何做出好评吗?
更新:
PayPal每天更新2次汇率.(至少,这是他们所说的).他们使用???提供的银行间汇率?并在该汇率之上加上2.5%差价以确定其零售汇率.不幸的是,银行间汇率因源不同而且每分钟都有所不同.
我们一直在监控PayPal汇率,并将其与欧洲中央银行提供的官方参考汇率进行交叉参考.结果差异很大,从1到6 !百分...
我被要求对Intranet站点实施一些更改/更新; 让它成为'未来证明',因为他们称之为.
我们发现使用MD5算法对密码进行哈希处理.(该系统自2001年以来一直存在,因此它足够了).
我们现在想要将散列算法升级为更强的算法(BCrypt-hash或SHA-256).
我们显然不知道明文密码,为用户群创建新密码不是一个选项*).
所以,我的问题是:
在没有访问明文密码的情况下,更改散列算法的可接受方法是什么?
最好的解决方案是完全"幕后"的解决方案.
*) 我们尝试了; 试图说服他们,我们使用了"密码时代"的论点,试图用咖啡贿赂他们,试图用蛋糕贿赂他们等等.但这不是一种选择.
更新
我希望有一些解决问题的自动解决方案,但显然除了'等待用户登录,然后转换'之外没有其他选择.
好吧,至少现在我现在没有其他解决方案可用.
我到处读(并在实践中看到)用户名不应该是可更改的.当我问为什么时,'安全'是一个理由.
我一直在寻找一个明确的答案,为什么更改用户名是不安全的,但我似乎无法找到答案.
这里有经验丰富的安全人员可以回答这个问题吗?
注意:如果您不知道答案,请不要猜测.我自己想到了很多原因,但我不知道实际答案,因此问题.
更新:
1:通过userId我的意思是引用某种唯一标识符,无论是数据库记录ID还是其他一些唯一ID.我多次被告知,即使用户名不是系统本身的主要/唯一标识符,更改用户名也不利于安全性.
2:我允许用户更改他们的"公共名称".这是用于向其他(非特权)用户标识用户的名称.例如:
userId: 1234
username: john02
public name: John Jameson
email: j.jameson@dev.null
3:正如Jason和The Rook所指出的,一致性似乎是唯一的好理由.我觉得这种"最佳实践"可能是过去某个地方的剩余部分,当用户名在系统中实际用于唯一识别用户时.
security ×3
php ×2
accounts ×1
blob ×1
cookies ×1
currency ×1
database ×1
encryption ×1
finance ×1
history ×1
inheritance ×1
oop ×1
paypal ×1
reflection ×1
registration ×1
remember-me ×1
svn ×1
web-crawler ×1