作为Magento的开发者已经有3年多了,整理下magento 1的代码片段,之前已经讲过一些代码片段如果没有的看过可以阅读magento代码片段,接下来我将给大家讲述magento的代码安全片段整理。
有时候我们在magento的开发的时候会用到cookie的设置,例如当你在网站上放置一个弹出框的时候,当用户进入你的website网站的首页的时候弹出来,再次刷新页面。或者明天再次访问你的网站的时候不显示弹出框了。这样的解决办法我们可以使用magento的cookie
进行控制。下面是我们获取cookie
操作的的方法比较简单。
1.magento 1的系统对cookie的操作
1 2 3 | $cookie = Mage::app()->getCookie(); 或者 $cookie = Mage::getSingleton('core/cookie'); |
1 2 3 4 5 6 | //设置cookie的生存日期,即使多久时间失效 $cookie->setLifeTime(intval(2) * 86400); //设置cookie的key字段 $cookie->set('skyg', '3424jKKFJSNK'); //获取cookie 字段的值 echo $cookie->get('sky8g'); |
上面我们通过的方法setLifeTime(intval(2) * 86400)
表示的我们设置的cookie的生存时间为2天也就是2后cookie自动消失无效。得到cookie的方法是使用$cookie->get($key)
获取。这样就可以在网站上设置了cookie了。如果你想删除cookie则使用$cookie->delete($key);
2.magento 1的系统生成唯一的hash ID
uniqHash()
此函数可以让你的表示符唯一,就像网页上的html
标签里面的id
一样,此hash
可以设置密码使用或者动态生成标签的id
。
1 | echo Mage::helper('core')->uniqHash('sky8g'); |
这个skyg是生成的id的前缀,完整的uniqHash
函数代码是如下 ,怎么样不错吧是不是唯一的,这是利用了md5
加密函数
1 2 3 | function uniqHash($prefix = ''){ return $prefix . md5(uniqid(microtime().mt_rand(), true)); } |
3.字符串进行加密编码和解密
如果你不希望别人知道你访问的url
你可以对url
进行加密操作。这样别人就不知道你的网址了。
1 | Mage::helper('core')->urlEncode('https://www.skyg8g.com'); |
这段代码是对 https://www.skyg8g.com
进行了编码加密。这样那些黑客不容易阅读。
下面的是对字符串url
进行解码操作。
1 2 3 | if($enUrl = Mage::helper('core')->urlEncode('https://www.sky8g.com')){ $deUrl = Mage::helper('core')->urlDecode($enUrl)); } |
4.脚本代码转义为html实体
将html标签转义为html实体,例如如果你们没有进行转化实体,则如果有人在评论区别人使用了脚本<script type=”text/javscript”>alert(1);</script>进行提交,然后你的页面就会执行了弹出1
对话框,为了避免某些黑客攻击,我们必须进行转义,这样页面上直接显示成了字符串<scripttype=”text/javscript”>alert(1);</script>不在执行了。
在页面上转化为实体不能再浏览器页面执行,这样就会给那些破坏你的网站的黑客或者非法分子非分之想。
1 | Mage::helper('core')->escapeHtml('<a href="www.baidu.com">这个标签</a>'); |
完整的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public function escapeHtml($data, $allowedTags = null) { if (is_array($data)) { $result = array(); foreach ($data as $item) { $result[] = $this->escapeHtml($item); } } else { // process single item if (strlen($data)) { if (is_array($allowedTags) and !empty($allowedTags)) { $allowed = implode('|', $allowedTags); $result = preg_replace('/<([\/\s\r\n]*)(' . $allowed . ')([\/\s\r\n]*)>/si', '##$1$2$3##', $data); $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false); $result = preg_replace('/##([\/\s\r\n]*)(' . $allowed . ')([\/\s\r\n]*)##/si', '<$1$2$3>', $result); } else { $result = htmlspecialchars($data, ENT_COMPAT, 'UTF-8', false); } } else { $result = $data; } } return $result; } |