2015年7月

PHP防SQL注入函数

//------------------------------
/**
 * 支持数组的addslashes
 * 如果用到intval   md5  sha1 这些函数就不需要转义了
 * @param mixed $string
 * @return unknown
 */
function waddslashes(&$string)
{
    if(is_array($string))
    {
        if(!empty($string))
        {
            foreach($string as $key => $val)
            {
                if(!empty($val))
                {
                    $string[$key] = waddslashes($val);
                }
            }
        }
    }
    elseif($string == NULL || empty($string))
    {
        //null      
    }
    else
    {
        $string = addslashes($string); 
                //addslashes转义sql语句, htmlspecialchars转义<和>(防止构造php和js语句)
    }
    return $string;
}

ssh密钥登录详解

ssh密钥登录详解

Tags: ssh 

0

1)ssh-keygen -t rsa     (在服务器端生成公钥、私钥对)【命令后会让输入密钥名称如果不写名称即默认id_rsa、id_rsa.pub ,然后公钥,密钥密码,然后就会生成】 
 
 ~/.ssh/id_rsa (生成后的私钥位置) 
 ~/.ssh/id_rsa.pub (生成后的公钥位置)



私钥是唯一的, 公钥是可以多发的。


公钥下发要服务器上:
scp -p ~/.ssh/id_rsa.pub root@192.168.1.7:/root/.ssh/authorized_keys
【如果下发到的服务器上没有这个.ssh目录则需要先创建目录
   ssh root@192.168.1.7 'mkdir ~/.ssh/' 】
【如果下发的服务器上有多个公钥,需要把自己的公钥文件传过去,然后追加到
authorized_keys文件下

命令:

(1)上传公钥名为
more id_rsa.pub:
 
more id_rsa.pub >> authorized_keys (服务器端启用公钥,追加到公钥文件)  
more ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (目录外执行,追加公钥文件)

(2)ssh root@192.168.1.7 '
more ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys'(直接执行命令)


 

注:如果认证未生效,检查配置文件将/etc/ssh/sshd_config中的rsa认证功能打开.(去掉注释)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile                .ssh/authorized_keys


然后重新启动sshd就行了.
service sshd restart

2)进阶设置

禁止口令登录

vi /etc/ssh/sshd_config

PasswordAuthentication yes 改为 PasswordAuthentication no

#PasswordAuthentication yes
PasswordAuthentication no

关于公钥和私钥的生成

1)公钥、秘钥生成

ssh-keygen #生成公钥+密钥

ssh-keygen -t rsa #默认生成用于SSH-2的RSA密钥,-t指定生成密钥类型

2)使用多个公钥、秘钥可以追加到

more ./id_rsa.pub >> ~/.ssh/authorized_keys (多个公钥追加)

more ./id_rsa >> ~/.ssh/id_rsa (多个秘钥追加)

3)给秘钥加个密码(passphrase)

可防止秘钥被非法拷贝!!

4)注销原公钥、秘钥对

(1) 删除、清空或替换authorized_keys文件即可注销原公钥、秘钥对。

ssh root@192.168.63.108 "rm -rf /root/.ssh/authorized_keys"
ssh root@192.168.63.108 "cat /dev/null > /root/.ssh/authorized_keys"
scp ./id_rsa.pub root@192.168.63.108:/root/.ssh/authorized_keys

(2) 删除、清空或替换id_rsa秘钥文件。

具体命令参考 (1),另可使用 -i 参数指定其他id_rsa文件

php判断是否有效email

if( ( $email!='' )&&( filter_var($email, FILTER_VALIDATE_EMAIL) ) )
{
    $_SESSION["tt_ty_email"] = $email;
    echo '是email';
}
else
{
    echo '否email';
}

阿里云 (安装Nginx)

1) 挂载磁盘

mkdir /data

echo "/dev/xvdb /data ext4 defaults,noatime,nodiratime 0 0" >> /etc/fstab

mkfs.ext4 -E lazy_itable_init=1 /dev/xvdb

mount -a

1+) 阿里云磁盘镜像(以备不时之需)

2) 安装LAMP服务器(略)

mkdir /data/env/

mkdir /data/www/

http://oslo.ps.pe/doc/project/?lamp

2+) 安装LEMP服务器

mkdir /data/env/

mkdir /data/www/

安装说明

系统环境:CentOS release 6.5 (Final)
软件:nginx-1.8.0.tar.gz
安装方式:yum安装(部署快速, 故未采用源码编译安装)

源码安装简要提示:

下载地址:http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.8.0.tar.gz

安装Nginx

参考:http://shmily2038.iteye.com/blog/1860063

Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便。

CentOS6.5,直接yum install nginx不行,要先处理下源。

(1) 配置yum源

CentOS 6.x

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

CentOS 7.x

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

可能遇到的问题:http://jafy00.blog.51cto.com/2594646/744306

一般情况下 yum clean all 即可解决

(2) 查看yum的nginx信息

yum info nginx

注:阿里云CentOS release 6.5 (Final)镜像的yum源能直接yum安装nginx,无需更改yum源

(3) 安装并启动nignx

yum install -y nginx
service nginx start
chkconfig nginx on #设为开机启动 (默认已开启)

3+) 关闭防火墙

service iptables stop #永久关闭防火墙(即时生效)
chkconfig iptables off #永久关闭防火墙(重启生效)

(4) 浏览器测试

http://192.168.1.8/

安装成功, 浏览器返回内容!!

Welcome to nginx!

注:centos 7.x相关命令请参考

http://oslo.ps.pe/doc/project/?lamp

http://www.laozuo.org/5494.html

3) nginx配置

参考:http://www.cnblogs.com/zhoulf/archive/2013/02/09/2909653.html

参考:http://www.csdn123.com/html/topnews201408/40/4940.htm

vi /etc/nginx/nginx.conf #Nginx的全局配置
vi /etc/nginx/conf.d/default.conf #server 虚拟主机配置

root部分为默认web根目录

    location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
nginx -V #查看版本和模块

虚机配置参考:http://www.neoease.com/nginx-virtual-host/

虚机配置参考:http://blog.itblood.com/nginx-same-ip-multi-domain-configuration.html

(1) 创建虚拟主机配置文件

mkdir /etc/nginx/conf.d/vhost/
vi /etc/nginx/conf.d/vhost/tt_ty_demo.conf
server {
listen 80;
server_name demo.ty.tt;
index index.html index.htm index.php;
root /data/www/tt_ty_demo;

    access_log  /var/log/nginx/demo.ty.tt.log main;

}

注:一个文件内配置多个域名的写法(只需要把server段重复一次即可) [示例略]

server {
listen 80;
server_name ty.tt www.ty.tt; #解析多个域名,如www域名,空格分开即可
index index.html index.htm index.php;
root /data/www/tt_ty_demo;

    access_log  /var/log/nginx/demo.ty.tt.log main;

}

(2) 引入虚拟主机配置文件(nginx.conf底部)

    #include /etc/nginx/conf.d/.conf;
include /etc/nginx/conf.d/vhost/
.conf;

(3) 让 Nginx 虚拟主机支持 PHP

见后文php部分

(4) 不带www的域名加301跳转

server {
listen 80;
server_name ty.tt;
rewrite ^/(.*) http://www.ty.tt/$1 permanent;
}

(5) 添加404网页

server {
listen 80;
server_name demo.ty.tt;
index index.html index.htm index.php;
root /data/www/tt_ty_demo;

    error_page 404 /404.html;

    access_log  /var/log/nginx/demo.ty.tt.log main;

}

(6) 配置ip直接访问的默认站点

server {
listen 80 default;
server_name demo.ty.tt;
index index.html index.htm index.php;
root /data/www/tt_ty_demo;

    access_log  /var/log/nginx/demo.ty.tt.log main;

}

安装MySQL

1) 检查安装mysql

rpm -qa|grep mysql #检查是否安装mysql
yum -y install mysql mysql-server #使用YUM 自动安装

2) 启动MySQL

service mysqld start #启动MySQL

3) 设为开机启动

chkconfig mysqld on #设为开机启动

4) 为root账户设置密码

mysql_secure_installation

安装PHP

1) 查询系统中有没有安装PCRE

rpm -qa | grep pcre

2) 安装PHP5

rpm -qa|grep php #检查是否安装php
yum -y install php #使用YUM 自动安装

php-fpm参考:http://php-fpm.org/

3) 安装PHP组件,使PHP支持 MySQL、PHP支持FastCGI模式

yum -y install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm
service mysqld restart #重启MySql
service nginx restart #重启nginx
service php-fpm start #启动php-fpm (暂时不执行,仅供参考,后文执行即可;如果先执行,修改完user和group配置仍需重启)
chkconfig php-fpm on  #设置开机启动

3) 配置nginx支持php

server {
listen 80;
server_name demo.ty.tt;
index index.html index.htm index.php;
root /data/www/tt_ty_demo;

    location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }

    access_log  /var/log/nginx/demo.ty.tt.log main;

}

4) 配置php-fpm

vi /etc/php-fpm.d/www.conf
       user = nginx   #修改用户为nginx
group = nginx #修改组为nginx
service php-fpm start #启动php-fpm

5) session目录权限

注意:session目录权限问题!!

yum安装的php,默认session目录为apache组。

困扰了俺大半天,以后多注意...

session.save_path = "/var/lib/php/session" #
# ll
total 4
drwxrwx--- 2 root apache 4096 Oct 31 2014 session
#ll
total 4
drwxrwx--- 2 root nginx 4096 Oct 31 2014 session