首页 > 后端开发 > 正文

php如何防止sql注入攻击?

2024-07-19 23:28:44 | 我爱编程网

小编今天整理了一些php如何防止sql注入攻击?相关内容,希望能够帮到大家。

本文目录一览:

php如何防止sql注入攻击?

php如何防止sql注入攻击?

注入式攻击的类型

可能存在许多不同类型的攻击动机,但是乍看上去,似乎存在更多的类型。这是非常真实的-如果恶意用户发现了一个能够执行多个查询的办法的话。本文后面,我们会对此作详细讨论。

果你的脚本正在执行一个SELECT指令,那么,攻击者可以强迫显示一个表格中的每一行记录-通过把一个例如 =1这样的条件注入到WHERE子句中,如下所示(其中,注入部分以粗体显示):

SELECT*FROMsitesWHEREsite='html580.com'OR1=1;'

正如我们在前面所讨论的,这本身可能是很有用的信息,因为它揭示了该表格的一般结构(这是一条普通的记录所不能实现的),以及潜在地显示包含机密信息的记录。

一条更新指令潜在地具有更直接的威胁。通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子(其中,注入部分以粗体显示):

UPDATEsitesSETsite='diygw.com'WHERE=

site='html580.com'

通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子:

UPDATEsitesSETsite='diygw.com'WHERE=

site='html580.comOR1=1;'

最危险的指令可能是DELETE-这是不难想像的。其注入技术与我们已经看到的相同-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子:

DELETEFROMsitesSETsite='diygw.com'WHERE= 我爱编程网

site='html580.comOR1=1;

php如何防止sql注入攻击?

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如何防止sql注入攻击?

php防止sql注入示例分析和几种常见攻击正则

我爱编程网(https://www.52biancheng.com)小编还为大家带来php防止sql注入示例分析和几种常见攻击正则的相关内容。

function customError($errno, $errstr, $errfile, $errline) 

echo "Error number: [$errno],error on line $errline in $errfile
"; 
die(); 

set_error_handler("customError",E_ERROR); 
$getfilter="'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
$postfilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
$cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq)

if(is_array($StrFiltValue)) 

$StrFiltValue=implode($StrFiltValue); 

if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1&&!isset($_REQUEST['securityToken']))

slog("

操作IP: ".$_SERVER["REMOTE_ADDR"]."
操作时间: ".strftime("%Y-%m-%d %H:%M:%S")."
操作页面:".$_SERVER["PHP_SELF"]."
提交方式: ".$_SERVER["REQUEST_METHOD"]."
提交参数: ".$StrFiltKey."
提交数据: ".$StrFiltValue); 
print "result notice:Illegal operation!"; 
exit(); 


foreach($_GET as $key=>$value)

StopAttack($key,$value,$getfilter); 

foreach($_POST as $key=>$value)

StopAttack($key,$value,$postfilter); 

foreach($_COOKIE as $key=>$value)

StopAttack($key,$value,$cookiefilter); 


function slog($logs) 

$toppath="log.htm"; 
$Ts=fopen($toppath,"a+"); 
fputs($Ts,$logs."\r\n"); 
fclose($Ts); 

?>

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php如何防止sql注入攻击?”相关推荐
php如何防止sql注入
php如何防止sql注入

php如何防止sql注入PHP防止sql注入是一个比较低级的问题了,这个问题其实在我大一上学期做第一个个人博客的时候就已经关注过了,不过简单的说一下关于PHP防注入的方式吧。使用PDO防注入。这是最简单直接的一种方式,当然低版本的PHP一般不支持PDO方式去操作,那么就只能采用其它方式。采用escape函数过滤非法字符。escape可以将非法字符比如斜杠等非

2025-01-14 09:45:27
PHP代码网站如何防范SQL注入漏洞攻击建议分享
PHP代码网站如何防范SQL注入漏洞攻击建议分享

PHP代码网站如何防范SQL注入漏洞攻击建议分享做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,

2025-02-03 06:34:20
怎样运行php文件?(求php防止被sql 注入攻击的过滤用户输入内容的函数)
怎样运行php文件?(求php防止被sql 注入攻击的过滤用户输入内容的函数)

怎样运行php文件?php文件如何在控制台运行?1、关键是要添加一个针对这个文件的运行配置。2、先打开菜单Run-EditConfigurations选项。3、然后在打开的窗口中点击左上角的+号。4、在打开的菜单中选择PHPScript。5、在打开的界面中找到Configuration-File。6、选择你要在控制台运行的文件。7、填入工作目录的路径(

2025-01-20 13:05:48
如何正确防御xss攻击
如何正确防御xss攻击

XSS(跨站脚本漏洞)谁帮忙修复下,我看着就头大,一窍不通啊。对于php你可以用htmlentities()函数例如这样:&lt;?phpechohtmlentities($_POST['abc']);?&gt;至于asp,租念颂默认弊郑就能防xss攻击高液,无需任何操作修复php漏洞xss改那个文件&lt;?php$aa=$_GET['dd'];echo $aa.

2024-12-11 19:14:19
什么是sql 注入,如何实现注入?
什么是sql 注入,如何实现注入?

什么是sql注入,如何实现注入?找了一个,希望能帮助你随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjec

2024-10-18 17:12:40
thinkphp怎么做才是安全的sql防注入
thinkphp怎么做才是安全的sql防注入

thinkphp怎么做才是安全的sql防注入注入的产生一般都是对用户输入的参数未做任何处理直接对条件和语句进行拼装.代码举例://不安全的写法举例1$_GET['id']=8;//希望得到的是正整数$data=M('Member')-&gt;where('id='.$_GET['id'])-&gt;find();$_GET['id']='8orstat

2024-11-11 09:18:11
Thinkphp框架 < 5.0.16 sql注入漏洞分析(Thinkphp框架 3.2.x sql注入漏洞分析)
Thinkphp框架 < 5.0.16 sql注入漏洞分析(Thinkphp框架 3.2.x sql注入漏洞分析)

Thinkphp框架<5.0.16sql注入漏洞分析本文讨论的是ThinkPHP框架版本&lt;5.0.16的SQL注入漏洞分析。文章首先介绍了环境搭建和漏洞复现的流程。在分析过程中,重点讲解了助手函数input()的使用以及数据库操作的基本框架,强调了使用框架的便捷性和安全性。接着,文章深入分析了漏洞发生的具体步骤。通过访问特定payload,程序跳转到入口文件,接着分析了sql执行

2025-02-11 06:14:11
PHP网站短信验证码如何防止被刷
PHP网站短信验证码如何防止被刷

PHP网站短信验证码如何防止被刷1、加验证码;2、加时间限制,间隔一定时间才能有效;3、数据库存储手机发送情况,如手机号,时间,IP;4、根据收集数据,判断是否刷机,禁用IP或者手机号等等,设置禁用时间5、根据实际情况,设置单天同个IP,手机号一天短信数量PHP中短信验证码怎样存到数据库中,并设置失效时间?php做短信验证码,需要将手机号,发送的验证码和时间这几个存到数

2024-08-21 13:13:26