手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

解决图片防盗链接问题

在直接引用外部图片的时候,经常会出现,该图片来自于XXX网站,请勿盗链
找了一下资料,发现只有几种方法可以解决
1、JS,HTML里嵌入iframe,然后类似地打开一个网页的形式,使得页面认为已经访问过主体网站,所以可以解决防盗链
2、如果页面中的图片是:/xxljaslkdjf/xxx.jpg,而这个图片事实上来自于:xxx.xxx.com网站,这时候在页面的<base >TAG里设置一下,就不需要全文正则替换图片了。灰常方便。。。
3、设置HTTP_REFERER,这个有点麻烦,不是每个站都支持。。。
4、在页面中放置一iframe,地址就是主体网站。然后等访问完成后302跳转到真正的页面,图片就能正常了
5、用URL转发的形式,如:image.php?url=image.path.jpg,通过这种方式,几乎解决了很多问题(但,不能走CDN了。真可惜啊。怎么办呢??生成本地图片后,再由CDN转发?不太现实)

基本上就上述的方法了,如果你还有新方法,请告知

Tags: 盗链

Yii for SAE 提交到google code

Yii for sae终于提交到了google code了。

yii framework for sina sae platform. 初步实现将yii framework 移植到 sina SAE云平台。 assets目录生成到storage中,runtime则是用memcached来实现, 也因此需要激活storage和memcached。 几乎不需要改原来的代码,如果需要设置主从数据库,请另外加一个components节点:sdb,配置信息与db一样,但需增加一个 'isSlave'=>true,即OK。不过在这种情况下,所有的model都请继承SaeActiveRecord?

配置信息中,在params里增加 'params'=>array(

'sae'=>array(
'storage' => array(
'assets' => 'assets', 'runtime'=>'runtime',
), 'db'=>array(
'slave'=>'sdb', 'master'=>'db',
)
),

);
----
配置起来是不是很简单?
当前目前还是有一点问题的

  1. 比如对于文件的LOG暂时无法实现,准备使用memcache存储部分,等到了一定大小后,扔到storage中存储。
  2. GII暂时还不能在线上使用,这个有点纠结,因为GII是需要生成文件 ,而sae平台不支持生成文件。如果扔到storage中,效率又不能保存。如果扔到memcache中。include之类的又不知道是否能够完美实现?纠结中。。(生成到storage?然后下载?扔到models目录中?这多没意思,与其这样,还不如本地建好model,然后SVN上传呢)
  3. 好象cdbcache是用了sqlite,原本看代码里是能够自动生成的,但在线上,怎么搞呢?存到storage中又没有效率?哎。。。

不过,暂时基本功能都实现了,嗯项目地址是:http://code.google.com/p/yiiforsae/

Tags: yii, sae

Yii for SAE

这两天在实现Yii for SAE,之所以想实现这样的功能,主要还是YII相对比较深入开发人员的人心吧?
这一定是我的个人偏见,因此不要打口水仗。
开发的时候,遇到的问题大多是runtime目录下的存储,以及主从数据库的问题,因此大部分的精力都是在解决这些。
所幸,还是可以利用yii的一些特性来搞定它。
嗯。70%已经完成了。如果差不多了,到时候会扔到google code上,这样想用的人就直接可以使用啦。

目前还在测试中,可以访问 http://ixyz.sinaapp.com进行测试。

Tags: yii, sae

Oauth的变迁

因为新浪的Oauth即将变成2.0,所以找找资料
老王更新了,还画了ascii图,说实话我是对他文中的那个画ascii图的视频有兴趣。。。
老王在博客里是这么介绍的:

OAuth2.0

OAuth1.0虽然在安全性上经过修补已经没有问题了,但还存在其它的缺点,其中最主要的莫过于以下两点:其一,签名逻辑过于复杂,对开发者不够友好;其二,授权流程太过单一,除了Web应用以外,对桌面、移动应用来说不够友好。

为了弥补这些短板,OAuth2.0做了以下改变:

首先,去掉签名,改用SSL(HTTPS)确保安全性,所有的token不再有对应的secret存在,这也直接导致OAuth2.0不兼容老版本。

其次,针对不同的情况使用不同的授权流程,和老版本只有一种授权流程相比,新版本提供了四种授权流程,可依据客观情况选择。

在详细说明授权流程之前,我们需要先了解一下OAuth2.0中的角色:

OAuth1.0定义了三种角色:User、Service Provider、Consumer。而OAuth2.0则定义了四种角色:Resource Owner、Resource Server、Client、Authorization Server:

  • Resource Owner:User
  • Resource Server:Service Provider
  • Client:Consumer
  • Authorization Server:Service Provider

也就是说,OAuth2.0把原本OAuth1.0里的Service Provider角色分拆成Resource Server和Authorization Server两个角色,在授权时交互的是Authorization Server,在请求资源时交互的是Resource Server,当然,有时候他们是合二为一的。

-------
当然,我这里CP的不全,更详细的请看:http://huoding.com/2011/11/08/126
如果不把ascii图CP过来,老王是不是很伤心?

这是第二次CP的。希望成功
  1. +----------+  
  2. | resource |  
  3. |   owner  |  
  4. |          |  
  5. +----------+  
  6.      ^  
  7.      |  
  8.     (B)  
  9. +----|-----+          Client Identifier      +---------------+  
  10. |         -+----(A)-- & Redirection URI ---->|               |  
  11. |  User-   |                                 | Authorization |  
  12. |  Agent  -+----(B)-- User authenticates --->|     Server    |  
  13. |          |                                 |               |  
  14. |         -+----(C)-- Authorization Code ---<|               |  
  15. +-|----|---+                                 +---------------+  
  16.   |    |                                         ^      v  
  17.  (A)  (C)                                        |      |  
  18.   |    |                                         |      |  
  19.   ^    v                                         |      |  
  20. +---------+                                      |      |  
  21. |         |>---(D)-- Authorization Code ---------'      |  
  22. |  Client |          & Redirection URI                  |  
  23. |         |                                             |  
  24. |         |<---(E)----- Access Token -------------------'  
  25. +---------+       (w/ Optional Refresh Token) 
哈哈,好象失败了。。。
OK,还有一篇介绍 :http://hueniverse.com/2010/05/introducing-oauth-2-0/

6 New Flows

  • User-Agent Flow – for clients running inside a user-agent (typically a web browser).
  • Web Server Flow – for clients that are part of a web server application, accessible via HTTP requests. This is a simpler version of the flow provided by OAuth 1.0.
  • Device Flow – suitable for clients executing on limited devices, but where the end-user has separate access to a browser on another computer or device.
  • Username and Password Flow – used in cases where the user trusts the client to handle its credentials but it is still undesirable for the client to store the user’s username and password.  This flow is only suitable when there is a high degree of trust between the user and the client.
  • Client Credentials Flow – the client uses its credentials to obtain an access token. This flow supports what is known as the 2-legged scenario.
  • Assertion Flow – the client presents an assertion such as a SAML assertion to the authorization server in exchange for an access token.

Native application support (applications running on a desktop or mobile device) can be implemented using many of the flows above.

----其实看起来就很纠结,反正先了解一下,refresh_token还得向新浪申请。真纠结

 

Tags: oauth, 新浪

下载了zentao pms

一句话:下载了zentao pms,准备用它来做项目管理,同时给自己写文档
嗯,用于neatpic项目。

精读项目,居然没时间写。最近在纠结于JS。。。所幸剩下的功能不多了。需要尽快完成才OK啊

neatpic项目可能会改名了。
不想再单文件处理,单文件有很多事情无法完成,比如,如果真的要按文件的更新时间排序,效率将会非常的低。所以,还是要靠数据库,或者其他方式。

当然,不放弃neatpic,如果我再做修改那就是最后一版了。

Tags: bugfree, zentao, pms