用js php如何实现显示js鼠标拖动画矩形热区条分数等级

博客访问: 1238552
博文数量: 477
博客积分: 918
博客等级: 准尉
技术积分: 3233
注册时间:
认证徽章:
你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 网络与安全 11:56:07
我们平时做用户登录表单提交,用户名密码都是明文直接POST到后端,这样很容易被别人从监听到。
注:包括使用MD5等哈希函数处理后的数据,这里也算做明文(现在MD5爆破网站已经很多了~)。
对安全性要求较高的网站,比如银行和大型企业等都会使用HTTPS对其进行加密通讯。
但是由于效率原因,使用HTTPS的代价是及其昂贵的,对于访问量稍大的网站就会造成严重的性能瓶颈。解决方法一般只能采用专门的SSL硬件加速设备如F5的BIGIP等。
所以很多网站选择了模拟SSL的做法,使用RSA来对密码等安全信息进行公钥加密,服务端用私钥解密。
通常是对密码进行加密,本文也拿密码加密为例。
网上相关信息太少,折腾了几天,终于有眉目了,先贴代码,关键部分后面说明。
首先加载三个RSA的js库文件,可以到这里下载&
javascript部分代码(with jQuery)
PHP部分代码
其中密钥的获取是关键(其他难点已经被从代码中解决)
由于密钥从x.509证书中获取,所以要先生成密钥及证书文件(本文中用的1024位密钥),具体生成方法可以参考我之前的那篇
这里重点说一下怎么获取十六进制的密钥。
从文件中读取密钥之前尝试了很多方式,无论怎么都无法提取正确的十六进制密钥。网上查了发现数据是用ASN.1编码过的……汗~
最后无意中注意到linux下用openssl命令貌似可以从密钥文件(key或pem)提取。方式如下:
openssl asn1parse -out temp.ans -i -inform PEM < server.pem
显示结果如下:
从这里可以看到最终的16进制密钥。
个人感觉这种方法并不算模拟HTTPS,只是利用其用到的RSA非对称加密算法实现小数据量安全加密。若要较完全的模拟SSL通信,就需要用RSA对另一密钥加密,然后通过一系列握手流程再进行对称加密。
PHP中openssl扩展公私钥加密函数只支持小数据,加密时117字节,解密时128字节。若不然得自己循环加密后合并。
SSL本身也只是用RSA来进行密钥加密,数据加密则是利用这个加密的密钥进行对称加密,以保证速度。所以万不可将其用于大数据量加密!
最后总结下本方案几处优点:
1、安全性高。基于非对称的RSA算法加密数据,只要在私钥不被暴露的前提下,密钥长度足够长,短时间内基本是无法破解的。
2、使用方便。前端使用现成的JS库来实现加密,PHP端则可直接使用现成的openssl扩展,而不用RSA的PHP源码实现或自己开发扩展。
3、速度靠谱。由于RSA解密算法相当复杂,而该操作交由PHP端扩展来实现,效率上比网上的PHP代码要高许多。
4、便于升级。密钥是直接从linux下openssl工具生成的证书中获取,不仅不用其他密钥生成工具,也方便今后升级到真正的HTTPS。
阅读(8538) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~
请登录后评论。3被浏览930分享邀请回答datatables.net/1添加评论分享收藏感谢收起phpjs-用js实现php的常用函数 - ThinkPHP框架
http://phpjs.org/
个人还是不太推荐。
积分:1699
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。&&(627)&&(117)&&(400)&&(65)&&(36)&&(557)&&(150)&&(302)&&(147)&&(20)
(7) (5) (33) (28) (7) (10) (6) (6) (7) (4) (4) (10) (5) (64) (87) (11) (10) (5) (42) (13) (9)
&Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有&备案号:。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。PHP + plupload.js JS插件实现多图上传并显示进度条加删除实例,废话不多说,直接上代码
HTML代码:
&!DOCTYPE html&
&meta charset="utf-8" /&
&meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"&
&title&多图上传&/title&
&script type="text/javascript" src="jquery.min.js"&&/script&
&script type="text/javascript" src="plupload.full.min.js"&&/script&
&style type="text/css"&
*{ margin:0 padding:0 font-family:Microsoft Y box-sizing:border- -webkit-box-sizing:border-}
.demo{max-width:640 margin:0 min-width:320}
.ul_pics{ float:}
.ul_pics li{float: margin:0 padding:0 margin-left:5 margin-top:5 position: list-style-type: border:1px solid # width:80 height:80}
.ul_pics li img{width:80height:80}
.ul_pics li i{ position: top:0 right:-1 background: cursor: font-style: font-size:10 width:14 height:14 text-align: line-height:12 color:#}
.progress{position: margin-top:30 background:#}
.bar {background-color: display: width:0%; height:15 }
.percent{position: height:15 top:-18 text-align: display:inline- left:0 width:80 color:#666; line-height:15 font-size:12 }
.demo #btn{ width:80 height:80 margin-left:5 margin-top:5 border:1px dotted #c2c2c2; background:url(up.png) no- background-size:30 text-align: line-height:120 font-size:30 color:#666; float:}
&div class="demo"&
&a href="javascript:void(0)" rel="external nofollow" id="btn"&&/a&
&ul id="ul_pics" class="ul_pics clearfix"&
&script type="text/javascript"&
var uploader = new plupload.Uploader({
//创建实例的构造方法
runtimes: 'html5,flash,silverlight,html4', //上传插件初始化选用那种方式的优先级顺序
browse_button: 'btn',
// 上传按钮
url: "upimgs.php&#63;get=upimg",
//远程上传地址
flash_swf_url: 'plupload/Moxie.swf',
//flash文件地址
silverlight_xap_url: 'plupload/Moxie.xap', //silverlight文件地址
filters: {
max_file_size: '10mb', //最大上传文件大小(格式100b, 10kb, 10mb, 1gb)
mime_types: [
//允许文件上传类型
{title: "files", extensions: "jpg,png,gif"}
multipart_params:{ },
//文件上传附加参数
file_data_name:"upimg", //文件上传的名称
multi_selection: false, //true:ctrl多文件上传, false 单文件上传
FilesAdded: function(up, files) { //文件上传前
if ($("#ul_pics").children("li").length & 5) {
alert("您上传的图片太多了!");
uploader.destroy();
var li = '';
plupload.each(files, function(file) { //遍历文件
li += "&li id='" + file['id'] + "'&&div class='progress'&&span class='bar'&&/span&&span class='percent'&上传中 0%&/span&&/div&&/li&";
$("#ul_pics").append(li);
uploader.start();
UploadProgress: function(up, file) { //上传中,显示进度条
var percent = file.
$("#" + file.id).find('.bar').css({"width": percent + "%"});
$("#" + file.id).find(".percent").text("上传中 "+percent + "%");
FileUploaded: function(up, file, info) { //文件上传成功的时候触发
var data = eval("(" + info.response + ")");
$("#" + file.id).html("&img src='" + this.url + "'/&&i onclick='delimg(this)'&x&/i&&input type='hidden' name='' value='"+ this.url +"'&");
Error: function(up, err) { //上传出错的时候触发
alert("error");
uploader.init();
function delimg(o){
var src = $(o).prev().attr("src");
$.post("upimgs.php&#63;get=delimg&imgurl="+src,function(data){
if(data==1){
$(o).parent().remove();
PHP 代码:
$typeArr = array("jpg", "png", "gif");//允许上传文件格式
$path = "files/";//上传路径
if (isset($_POST)) {
if($_GET['get']=="upimg"){
$name = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$name_tmp = $_FILES['file']['tmp_name'];
if (empty($name)) {
echo json_encode(array("error"=&"您还未选择图片"));
$type = strtolower(substr(strrchr($name, '.'), 1)); //获取文件类型
if (!in_array($type, $typeArr)) {
echo json_encode(array("error"=&"清上传jpg,png或gif类型的图片!"));
if ($size & (1024 * 1024 * 10)) {
echo json_encode(array("error"=&"图片大小已超过10MB!"));
$pic_name = time() . rand(1) . "." . $//图片名称
$pic_url = $path . $pic_//上传后图片路径+名称
if (move_uploaded_file($name_tmp, $pic_url)) { //临时文件转移到目标文件夹
echo json_encode(array("error"=&"0","pic"=&$pic_url,"name"=&$pic_name));
echo json_encode(array("error"=&"上传有误,清检查服务器配置!"));
if($_GET['get']=="delimg"){
$imgsrc = $_GET['imgurl'];
unlink($imgsrc);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持就爱阅读。
欢迎转载:
相关推荐:

我要回帖

更多关于 在图片上画矩形框 js 的文章

 

随机推荐