符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
网站安全是指出于防止网站受到外来电脑入侵者对其网站进行挂马,篡改网页等行为而做出一系列的防御工作。自从上世纪90年代国内互联网发展到现在,互联网可以说与我们的生活、学习、工作密不可分,成为我们生活中不可缺少的一部分。与此同时,网站的在安全方面也存在不少问题:1大多数网站设计,只考虑正常用户稳定使用网站存在的这些漏洞在黑客对漏洞敏锐的发觉和充分利用的动力下被挖掘出来,并且这些黑客们也会直接或间接的利用这些漏洞获取利益。2落后的网站防御措施传统的防御黑客网站攻击不外乎有两种情况:基于特征识别的入侵防御技术和内容过滤技术,这两种情况的效果不是很好。比如我们常说的SQL注入、跨站脚本等网站攻击。另外有很多网站管理人员对网站的价值认识不够全面,对服务器的安全防护措施认识很肤浅,对安全做的不到位,这是导致网站防御效果不佳另外一个原因。3未能及时发现黑客的入侵不少黑客为了炫耀自己的水平,经常通过篡改网页来传播一些非法信息,但是他们篡改网页的技术比较隐蔽,这种行为开始之前黑客们会利用网站的漏洞,进而获得网站的控制权限。一旦网站的控制权限被他们获取了,此时他们就会从控制的网站中获得直接利益。目前,就有一种非常隐蔽且能直接从中获取利益的方式,那就是我们常说的网页挂马。4发现的安全问题不能被彻底解决网站安全代码设计是确保网站安全的最基本的保障,好多网站开发与设计公司对这方面关注不够全面,并且了解不够深入,即使网站安全方面存在的问题或者漏洞在开发或者运营的过程中被发现,他们对该网站的修补方式也比较简单,也只停留在网站的页面修复上,针对网站的具体漏洞原理研究不够深入,基本不做什么处理,也谈不上对其源代码的改造了。PHP语言和ASP语言一样,都是当今比较热门的网站程序开发脚本语言,而PHP语言有自己的优点:成本低、速度快、可移植性好、内置丰富的函数库等,也就因为这些PHP语言越来越多的网站开发企业所看重,并大幅度的应用其中。现在就我个人开发网站的经验,就PHP语言开发过程,针对网站安全在网络交易和数据传输安全方面的应用做一下简单介绍。针对我们开发人员来说,在所有的动态网站技术当中比较看好PHP语言,因为在其语言脚本中内置了一些用于网站安全加密技术的函数,这一点对于开发很方便,它也是一种最有效的方法从底层保证网站信息安全。下面来谈一谈这些内置的加密函数及其应用:4.1PHP的内置函数及简介PHP中内置的加密函数:crypt()、MD5、base64_enecode/base64_decode。(1)crypt()。该函数是对明文进行单向加密。比如:我们在对网站的用户登录的密码进行加密时,就可以采用这种方法,用这个函数加密后的密文,当网站用户需要登录该网站进行密码验证时,进行过单向加密后的密文要与系统中保存的已经设计好的密文进行严格的比较,如果匹配成功,那就允许该用户成功登录。在明文加密的过程中,要用到一个函数,这个函数可以通过改变其中的相关参数来降低预计算攻击的威胁,它就是:stringcrypt(stringinput_string[,stringsalt]),该函数中的input_string就是我们想要加密的字符串,而可选参数salt就是我们提到的相关参数。我们还可以利用crypt()函数对用户的身份进行验证,限制用户的访问权限。在这里我们可以这样做,首先创建一个信息表,且带有用户名和密码相关数据信息。在这个信息表里面的每个口令的前两个字母都创建了干扰字符串。我们会在这里使用Apche的口令-应答认证配置来提示用户输入用户名和口令,以保证用户输入的信息正确安全。(2)MD5。在PHP中,我们可以利用内置函数MD5()进行数字签名验证和身份验证或者文件完整性检查等安全检查。那么函数MD5()是怎样完成这项工作的呢?因为它可以通过计算转化将任何可变长度的信息转化为一个128位消息摘要。它的具体形式为:MD5(string,raw),参数string为输入计算的字符串,而raw则为可选用参数,主要用来规定函数是十六进制还是二进制的输出格式。在使用的过程中,通过改变string中的任何一个字符,来告改变计算得出的结果。(3)BASE64_ENECODE与BASE64_DECODE。BASE64_ENECODE()和BASE64_DECODE()是一对函数,在编
10余年的南平网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整南平建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“南平网站设计”,“南平网站推广”以来,每个客户项目都认真落实执行。
不需要加密,也无法加密。可以这么说,如果数据库和程序是在同一服务器,及数据库的地址是localhost,那么无需加密,因为加密了数据库并不能自己解密,而且只要网站或者服务器不被攻下,没有加密的必要。
数据库和php程序在不同的服务器,就是说你在操作数据库的时候需要远程操作,这样的话需要传输数据库账号密码,可以在本地加密后传输,然后在数据库服务器进行解密后,用原始的账号密码去操作数据库。
--------------------------------------------------------一般来说,如果你担心服务器被攻下,那么你加密数据库账号密码是多余的,因为人家下载你的源码一看就知道鸟。
php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密1、加密解密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:openssl genrsa -out rsa_private_key.pem 1024 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给android跟ios等前端2、php中用生成的公钥、私钥进行加密解密,直接上代码?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/ Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH 2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6 ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL 3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq deJU/cHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+ qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2 4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c -----END RSA PRIVATE KEY-----'; $public_key = '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt 3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o 2n1vP1D+tD3amHsK7QIDAQAB -----END PUBLIC KEY-----'; //echo $private_key; $pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的 print_r($pi_key);echo "\n"; print_r($pu_key);echo "\n"; $data = "aassssasssddd";//原始数据 $encrypted = ""; $decrypted = ""; echo "source data:",$data,"\n"; echo "private key encrypt:\n"; openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密 $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 echo $encrypted,"\n"; echo "public key decrypt:\n"; openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来 echo $decrypted,"\n"; echo "---------------------------------------\n"; echo "public key encrypt:\n"; openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密 $encrypted = base64_encode($encrypted); echo $encrypted,"\n"; echo "private key decrypt:\n"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密 echo $decrypted,"\n";
利用可逆函数加随机盐进行加密和解密~
客户端利用密钥加密提交,服务端利用密钥解密,密钥一次性,使用后作废
这需要用ajax来实现
index.php
html
titlephp+jquery+ajax+json简单小例子/title
?php
header("Content-Type:text/html;charset=utf-8");
?
head
script type="text/javascript" src="
script type="text/javascript"
$(function() {
$("#subbtn").click(function() {
var params = $("input").serialize();
var url = "1.php";
$.ajax({
type: "post",
url: url,
dataType: "json",
data: params,
success: function(msg){
var backdata = "您提交的姓名为:" + msg.name +
"br / 您提交的密码为:" + msg.password;
$("#backdata").html(backdata);
$("#backdata").css({color: "green"});
}
});
});
});
/script
/head
body
plabel for="name"姓名:/label
input id="name" name="name" type="text" /
/p
plabel for="password"密码:/label
input id="password" name="password" type="password" /
/p
span id="backdata"/span
pinput id="subbtn" type="button" value="提交数据" //p
/body
/html
1.php代码:
?php
//接收数据-处理数据-返回数据
echo json_encode($_POST);
?
?php
/**
* 3DES加解密类
* @Author: 黎志斌
* @version: v1.0
* 2016年7月21日
*/
class Encrypt
{
//加密秘钥,
private $_key;
private $_iv;
public function __construct($key, $iv)
{
$this-_key = $key;
$this-_iv = $iv;
}
/**
* 对字符串进行3DES加密
* @param string 要加密的字符串
* @return mixed 加密成功返回加密后的字符串,否则返回false
*/
public function encrypt3DES($str)
{
$td = mcrypt_module_open(MCRYPT_3DES, "", MCRYPT_MODE_CBC, "");
if ($td === false) {
return false;
}
//检查加密key,iv的长度是否符合算法要求
$key = $this-fixLen($this-_key, mcrypt_enc_get_key_size($td));
$iv = $this-fixLen($this-_iv, mcrypt_enc_get_iv_size($td));
//加密数据长度处理
$str = $this-strPad($str, mcrypt_enc_get_block_size($td));
if (mcrypt_generic_init($td, $key, $iv) !== 0) {
return false;
}
$result = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $result;
}
/**
* 对加密的字符串进行3DES解密
* @param string 要解密的字符串
* @return mixed 加密成功返回加密后的字符串,否则返回false
*/
public function decrypt3DES($str)
{
$td = mcrypt_module_open(MCRYPT_3DES, "", MCRYPT_MODE_CBC, "");
if ($td === false) {
return false;
}
//检查加密key,iv的长度是否符合算法要求
$key = $this-fixLen($this-_key, mcrypt_enc_get_key_size($td));
$iv = $this-fixLen($this-_iv, mcrypt_enc_get_iv_size($td));
if (mcrypt_generic_init($td, $key, $iv) !== 0) {
return false;
}
$result = mdecrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $this-strUnPad($result);
}
/**
* 返回适合算法长度的key,iv字符串
* @param string $str key或iv的值
* @param int $td_len 符合条件的key或iv长度
* @return string 返回处理后的key或iv值
*/
private function fixLen($str, $td_len)
{
$str_len = strlen($str);
if ($str_len $td_len) {
return substr($str, 0, $td_len);
} else if($str_len $td_len) {
return str_pad($str, $td_len, '0');
}
return $str;
}
/**
* 返回适合算法的分组大小的字符串长度,末尾使用\0补齐
* @param string $str 要加密的字符串
* @param int $td_group_len 符合算法的分组长度
* @return string 返回处理后字符串
*/
private function strPad($str, $td_group_len)
{
$padding_len = $td_group_len - (strlen($str) % $td_group_len);
return str_pad($str, strlen($str) + $padding_len, "\0");
}
/**
* 返回适合算法的分组大小的字符串长度,末尾使用\0补齐
* @param string $str 要加密的字符串
* @return string 返回处理后字符串
*/
private function strUnPad($str)
{
return rtrim($str);
}
}
$key = 'ABCEDFGHIJKLMNOPQ';
$iv = '0123456789';
$des = new Encrypt($key, $iv);
$str = "abcdefghijklmnopq";
echo "source: {$str},len: ",strlen($str),"\r\n";
$e_str = $des-encrypt3DES($str);
echo "entrypt: ", $e_str, "\r\n";
$d_str = $des-decrypt3DES($e_str);
echo "dntrypt: {$d_str},len: ",strlen($d_str),"\r\n";