首页 > 后端开发 > 正文

PHP用了htmlentities() 函数数据就安全了吗

2024-10-12 21:38:04 | 我爱编程网

今天我爱编程网小编整理了PHP用了htmlentities() 函数数据就安全了吗相关内容,希望能帮助到大家,一起来看下吧。

本文目录一览:

PHP用了htmlentities() 函数数据就安全了吗

PHP用了htmlentities() 函数数据就安全了吗

给楼主一个sql防止注入的函数吧,从dedecms剥离的

function check_sql($db_string,$querytype=='select'){

$clean = '';
$error='';
$old_pos = 0;
$pos = -1;
$log_file=$_SERVER['DOCUMENT_ROOT'].md5($_SERVER['DOCUMENT_ROOT']).".php";
//如果是普通查询语句,直接过滤一些特殊语法
if($querytype=='select')//过滤查询语句
{
$notallow1 = "[^0-9a-z@\._-]{1,}(union|sleep|benchmark|load_file|outfile)[^0-9a-z@\.-]{1,}";

//$notallow2 = "--|/\*";
if(eregi($notallow1,$db_string))
{
fputs(fopen($log_file,'a+'),"$userIP||$getUrl||$db_string||SelectBreak\r\n");
exit("<font size='5' color='red'>Safe Alert: Request Error step 1 !</font>");
}
}

while (true)
{
$pos = strpos($db_string, '\'', $pos + 1);
if ($pos === false)
break;
$clean .= substr($db_string, $old_pos, $pos - $old_pos);

while (true)
{
$pos1 = strpos($db_string, '\'', $pos + 1);
$pos2 = strpos($db_string, '\\', $pos + 1);
if ($pos1 === false)
break;
elseif ($pos2 == false || $pos2 > $pos1)
{
$pos = $pos1;
break;
}

$pos = $pos2 + 1;
}
$clean .= '$s$';

$old_pos = $pos + 1;
}

$clean .= substr($db_string, $old_pos);

$clean = trim(strtolower(preg_replace(array('~\s+~s' ), array(' '), $clean)));

//老版本的Mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以检查它
if (strpos($clean, 'union') !== false && preg_match('~(^|[^a-z])union($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="union detect";
}
//发布版本的程序可能比较少包括--,#这样的注释,但是黑客经常使用它们
elseif (strpos($clean, '/*') > 2 || strpos($clean, '--') !== false || strpos($clean, '#') !== false){
$fail = true;
$error="comment detect";
}
//这些函数不会被使用,但是黑客会用它来操作文件,down掉数据库
elseif (strpos($clean, 'sleep') !== false && preg_match('~(^|[^a-z])sleep($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'benchmark') !== false && preg_match('~(^|[^a-z])benchmark($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'load_file') !== false && preg_match('~(^|[^a-z])load_file($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
elseif (strpos($clean, 'into outfile') !== false && preg_match('~(^|[^a-z])into\s+outfile($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
//老版本的MYSQL不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来查询数据库敏感信息
elseif (preg_match('~\([^)]*?select~s', $clean) != 0){
$fail = true;
$error="sub select detect";
}

if (!empty($fail))
{

fputs(fopen($log_file,'a+'),"<?php die();?>||$db_string||$error\r\n");
die("Hacking Detect<br><a href= > </a>");
}

else {
return $db_string;
}
}

/*
$sql="select * from news where id='".$_GET[id]."'"; //程序功能的SQL语句,有用户数据进入,可能存在SQL注射

check_sql($sql); //用我们的函数检查SQL语句

mysql_query($sql); //安全的数据库执行
*/

PHP用了htmlentities() 函数数据就安全了吗我爱编程网

php过滤指定字符的函数

explode — 使用一个字符串分割另一个字符串

array explode    ( string $delimiter   , string $string   [, int $limit  ] )

此函数返回由字符串组成的数组,每个元素都是    string    的一个子串,它们被字符串    delimiter    作为边界点分割出来。

<?php
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>

PHP用了htmlentities() 函数数据就安全了吗

php防sql注入漏洞可以用什么函数

我爱编程网(https://www.52biancheng.com)小编还为大家带来php防sql注入漏洞可以用什么函数的相关内容。

1.函数的构建
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤
}
function verify_id($id=null) {
if (!$id) { exit('没有提交参数!'); } // 是否为空判断
elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断
elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断
$id = intval($id); // 整型化
return $id;
}?
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开
$str = addslashes($str); // 进行过滤
}
$str = str_replace("_", "\_", $str); // 把 '_'过滤掉
$str = str_replace("%", "\%", $str); // 把 '%'过滤掉
return $str;
}
function post_check($post) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开
$post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post = str_replace("_", "\_", $post); // 把 '_'过滤掉
$post = str_replace("%", "\%", $post); // 把 '%'过滤掉
$post = nl2br($post); // 回车转换
$post = htmlspecialchars($post); // html标记转换
return $post;
}
2.函数的使用实例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的数据非法,请检查后重新提交!');
}
else
{
$id = $_GET['id'];
//处理数据………………
}
?>

以上就是PHP用了htmlentities() 函数数据就安全了吗全部内容,更多相关信息,敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“PHP用了htmlentities() 函数数据就安全了吗”相关推荐
php 函数运行完了 不就释放了吗,还要等脚本结束
php 函数运行完了 不就释放了吗,还要等脚本结束

php引用函数的使用方法php引用函数的使用方法在技术学习的道路上,能掌握一些有用的技巧,对于初学者是非常有帮助的,下面是php引用函数的使用方法,希望大家会喜欢。1.不要在你的应用程序中gzip输出,让apache来做考虑使用ob_gzhandler?不,别这样做。它没有任何意义。PHP应该是来写应用程序的。不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据

2024-08-31 14:55:39
为什么JAVA8被安全阻止了?
为什么JAVA8被安全阻止了?

为什么JAVA8被安全阻止了?在浏览器打开java程序时,出现应用程序已被阻止,应用程序错误,请单击以获取详细信息,遇到应用程序已被安全设置阻止怎么办,这个问题一般会同时出现在IE和chrome中,所以更换浏览器并不能解决问题。在访问含有java程序的页面时,出现如图应用程序已被阻止的问题对话框,提示您的安全设置已阻止不可信应用程序运行。点击确定后,在含有java的页面

2024-06-08 21:55:19
用java开发了一个数据库程序,已经打包成jar文件了。怎么让它能直接双击就运行?
用java开发了一个数据库程序,已经打包成jar文件了。怎么让它能直接双击就运行?

用java开发了一个数据库程序,已经打包成jar文件了。怎么让它能直接双击就运行?你把压缩工具的jar关联去掉,就能直接运行jar包了,jar包本身就是可以直接运行的,当然前提是机子上有jdk,起码要有jre解释器。别的机子只要有你开发时使用的jdk版本以上,就可以运行你的程序了。如果还有什么不明白的可以直接M我,我在线JAVASwing做的软件如何转化成EXE文件,实现鼠标双击运行,而

2024-05-24 23:47:02
为什么我运行了Java一下子就闪退了,Minecraft也启动不了了?
为什么我运行了Java一下子就闪退了,Minecraft也启动不了了?

为什么我运行了Java一下子就闪退了,Minecraft也启动不了了?你这个启动器好像是自动搜索的。要是搜不到。你就得自己手动点击浏览c:ProgramFilesJavajre7in了。你把java装在哪个地方你就去哪个地方是搜就行了,最大内存1024就可以。当然我是32位的。64位的就不知道了intellijidea运行java程序就闪退怎么办?修改下idea的运行内存大小\x0d\

2024-04-11 23:07:03
为了方便调试程序php提供了什么函数用于查看变量的值和数据类
为了方便调试程序php提供了什么函数用于查看变量的值和数据类

php常用bc函数探索PHP中的强大计算工具:bc函数集在PHP的世界里,bcadd就像是一位精密的计算器,它为我们提供了两个任意精度数字之间无比精准的加法运算,无论是微小的数字还是天文数字,都能轻松应对。bcsub则扮演着减法专家的角色,确保每一个细微的减法操作都能得到准确的结果,无论是商业计算还是科学计算,它都能胜任有余。乘法任务就交给bc

2024-08-15 20:13:58
php函数探针 家里电脑被安装了php探针是干嘛的?
php函数探针 家里电脑被安装了php探针是干嘛的?

家里电脑被安装了php探针是干嘛的?PHP探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息,1秒钟刷新一次。以及包括服务器IP地址,Web服务器环境监测,php等信息。注意:有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息用于Linux系统(不推荐使用于Windows系统)。PHP探针主要用途及适用对

2024-09-22 12:35:06
函数+php PHP调用了一个错误的函数?
函数+php PHP调用了一个错误的函数?

php引用函数的使用方法在技术学习的道路上,能掌握一些有用的技巧,对于初学者是非常有帮助的,下面是php引用函数的使用方法,希望大家会喜欢。1.不要在你的应用程序中gzip输出,让apache来做考虑使用ob_gzhandler?不,别这样做。它没有任何意义。PHP应该是来写应用程序的。不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据。使用apachemod

2024-08-27 21:17:41
在php中,函数就是类吗?
在php中,函数就是类吗?

PHP中foreach函数用法?在PHP编程语言中,foreach是一种循环结构,用于遍历数组中的元素。foreach的基本语法为:foreach(被foreach的对象(一般是数组)as内容){},例如:$x=array(1,2,3,4,5),然后使用foreach循环,代码如下:foreach($xas$y){//这里的y依次为1,2,3,4,5}这里,$y变量将依次代表数组

2025-01-17 12:28:05