zoukankan      html  css  js  c++  java
  • php 防注入

    a. 打开magic_quotes_gpc或使用addslashes()函数

      

    当php.ini里的 magic_quotes_gpc 为On 时。

    提交的变量中所有的 ' (单引号), " (双引号),  (反斜线) and 空字符会自动转为含有反斜线的转义字符,给SQL注入带来不少的麻烦。

    b. 强制字符格式(类型)

    在很多时候我们要用到类似xxx.php?id=xxx这样的URL,一般来说$id都是整型变量,为了防范攻击者把$id篡改成攻击语句,我们要尽量强制变量,代码如下:

    PHP防范SQL注入的代码

    $id=intval($_GET[‘id’]);

    当然,还有其他的变量类型,如果有必要的话尽量强制一下格式。

    c. SQL语句中包含变量加引号

    这一点儿很简单,但也容易养成习惯,先来看看这两条SQL语句:

    SQL代码

    SELECT * FROM article WHERE articleid='$id' 
    SELECT * FROM article WHERE articleid=$id

    两种写法在各种程序中都很普遍,但安全性是不同的,第一句由于把变量$id放在一对单引号中,这样使得我们所提交的变量都变成了字符串,即使包含了正确的SQL语句,也不会正常执行,而第二句不同,由于没有把变量放进单引号中,那我们所提交的一切,只要包含空格,那空格后的变量都会作为SQL语句执行,因此,我们要养成给SQL语句中变量加引号的习惯。

    d.URL伪静态化

    URL伪静态化也就是URL重写技术,像Discuz!一样,将所有的URL都rewrite成类似xxx-xxx-x.html格式,既有利于SEO,又达到了一定的安全性,也不失为一个好办法。但要想实现PHP防范SQL注入,前提是你得有一定的“正则”基础。

  • 相关阅读:
    redux-simple 简化版的redux
    react服务端渲染(同构)
    使用systemd管理程序进程
    使用Dockerfile构建镜像
    centos7使用supermin制作centos7的docker镜像包
    DNS-dnsmasq安装配置
    kubernetes-部署(单机,使用证书)
    DNS-bind+namedmanager安装
    python3第一个脚本(hello world!)
    Python3 基础语法
  • 原文地址:https://www.cnblogs.com/killallspree/p/3580006.html
Copyright © 2011-2022 走看看