简单实用的PHP防注入类实例
程序员文章站
2022-06-29 12:34:39
本文实例讲述了简单实用的php防注入类。分享给大家供大家参考。具体如下:
php防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等s...
本文实例讲述了简单实用的php防注入类。分享给大家供大家参考。具体如下:
php防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全.
php防注入类代码如下:
复制代码 代码如下:
<?php
/**
* 参数处理类
* @author jasonwei
*/
class params
{
public $get = array();
public $post = array();
function __construct()
{
if (!emptyempty($_get)) {
foreach ($_get as $key => $val) {
if (is_numeric($val)) {
$this->get[$key] = $this->getint($val);
} else {
$this->get[$key] = $this->getstr($val);
}
}
}
if (!emptyempty($_post)) {
foreach ($_post as $key => $val) {
if (is_numeric($val)) {
$this->post[$key] = $this->getint($val);
} else {
$this->post[$key] = $this->getstr($val);
}
}
}
}
public function getint($number)
{
return intval($number);
}
public function getstr($string)
{
if (!get_magic_quotes_gpc()) {
$string = addslashes($string);
}
return $string;
}
public function checkinject($string)
{
return eregi('select|insert|update|delete|/*|*|../|./|union|into|load_file|outfile', $string);
}
public function verifyid($id = null)
{
if (!$id || $this->checkinject($id) || !is_numeric($id)) {
$id = false;
} else {
$id = intval($id);
}
return $id;
}
}
?>
/**
* 参数处理类
* @author jasonwei
*/
class params
{
public $get = array();
public $post = array();
function __construct()
{
if (!emptyempty($_get)) {
foreach ($_get as $key => $val) {
if (is_numeric($val)) {
$this->get[$key] = $this->getint($val);
} else {
$this->get[$key] = $this->getstr($val);
}
}
}
if (!emptyempty($_post)) {
foreach ($_post as $key => $val) {
if (is_numeric($val)) {
$this->post[$key] = $this->getint($val);
} else {
$this->post[$key] = $this->getstr($val);
}
}
}
}
public function getint($number)
{
return intval($number);
}
public function getstr($string)
{
if (!get_magic_quotes_gpc()) {
$string = addslashes($string);
}
return $string;
}
public function checkinject($string)
{
return eregi('select|insert|update|delete|/*|*|../|./|union|into|load_file|outfile', $string);
}
public function verifyid($id = null)
{
if (!$id || $this->checkinject($id) || !is_numeric($id)) {
$id = false;
} else {
$id = intval($id);
}
return $id;
}
}
?>
例子二,代码如下:
复制代码 代码如下:
<?php
/*************************
说明:
判断传递的变量中是否含有非法字符
如$_post、$_get
功能:
防注入
*************************/
//要过滤的非法字符
$arrfiltrate=array("'","or","and","union","where");
//出错后要跳转的url,不填则默认前一页
$strgourl="";
//是否存在数组中的值
function funstringexist($strfiltrate,$arrfiltrate){
foreach ($arrfiltrate as $key=>$value){
if (eregi($value,$strfiltrate)){
return true;
}
}
return false;
}
//合并$_post 和 $_get
if(function_exists(array_merge)){
$arrpostandget=array_merge($http_post_vars,$http_get_vars);
}else{
foreach($http_post_vars as $key=>$value){
$arrpostandget[]=$value;
}
foreach($http_get_vars as $key=>$value){
$arrpostandget[]=$value;
}
}
//验证开始
foreach($arrpostandget as $key=>$value){
if (funstringexist($value,$arrfiltrate)){
echo "<script language='javascript'>alert('传递的信息中不得包含{',or,and,union}等非法字符请您把他们换成{‘,or,and,union}');</script>";
if (emptyempty($strgourl)){
echo "<scriptlanguage='javascript'>history.go(-1);</script>";
}else{
echo "<scriptlanguage='javascript'>window.location='".$strgourl."';</script>";
}
exit;
}
}
/***************结束防止php注入*****************/
?>
/*************************
说明:
判断传递的变量中是否含有非法字符
如$_post、$_get
功能:
防注入
*************************/
//要过滤的非法字符
$arrfiltrate=array("'","or","and","union","where");
//出错后要跳转的url,不填则默认前一页
$strgourl="";
//是否存在数组中的值
function funstringexist($strfiltrate,$arrfiltrate){
foreach ($arrfiltrate as $key=>$value){
if (eregi($value,$strfiltrate)){
return true;
}
}
return false;
}
//合并$_post 和 $_get
if(function_exists(array_merge)){
$arrpostandget=array_merge($http_post_vars,$http_get_vars);
}else{
foreach($http_post_vars as $key=>$value){
$arrpostandget[]=$value;
}
foreach($http_get_vars as $key=>$value){
$arrpostandget[]=$value;
}
}
//验证开始
foreach($arrpostandget as $key=>$value){
if (funstringexist($value,$arrfiltrate)){
echo "<script language='javascript'>alert('传递的信息中不得包含{',or,and,union}等非法字符请您把他们换成{‘,or,and,union}');</script>";
if (emptyempty($strgourl)){
echo "<scriptlanguage='javascript'>history.go(-1);</script>";
}else{
echo "<scriptlanguage='javascript'>window.location='".$strgourl."';</script>";
}
exit;
}
}
/***************结束防止php注入*****************/
?>
希望本文所述对大家的php程序设计有所帮助。
上一篇: 大数据技术存在局限 经验直觉不可或缺
下一篇: 一步步教你建立SQL数据库的表分区