PHP防止SQL注入示例分析和几种常见的攻击正则表达式

PHP防止SQL注入示例分析和几种常见的攻击正则表达式
注入漏洞代码及其分析

复制代码代码如下所示:
< PHP
功能自定义错误(错误errstr美元,美元,美元errfile美元,errline)
{
回声错误号:{ $ errno },在errfile美元errline美元的错误;
(死亡);
}
set_error_handler(自定义错误
getfilter美元=|(和|或) B +(> < | | = |在|像)| / *。+ * / | < *脚本 B | 预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)。+ |(创建|改变|滴|截断) +(表|数据库);
美元再次= B(和|或) B. {或}(= | > | < | 本 B | Blike B)| / *,+ * / | < *脚本 B | 预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)+ |(创建。|改变|滴|截断) +(表|数据库)。
cookiefilter美元= B(和|或) B. {或}(= | > | < | 本 B | Blike B)| / *,+ * / | < *脚本 B | 预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)+ |(创建。|改变|滴|截断) +(表|数据库)。
功能stopattack(strfiltkey美元美元美元,strfiltvalue,arrfiltreq)
{
如果(is_array($ strfiltvalue))
{
strfiltvalue美元(美元strfiltvalue)=崩溃;
}
如果(preg_match( / 。arrfiltreq美元。 /
{
猛击(运行IP:。_server美元{ remote_addr )。手术时间:。Strftime(% y %M - %:% H M:%s)。操作页面:美元。_server {php_self ,提交模式:美元。_server {request_method 。
打印结果通知:非法操作!;
出口();
}
}
foreach(_get美元美元美元价值的关键= >)
{
stopattack(美元,美元的价值,getfilter美元);
}
foreach(_post美元美元美元价值的关键= >)
{
stopattack(美元美元美元价值的关键,,后置);
}
foreach(_cookie美元美元美元价值的关键= >)
{
stopattack(美元,美元的价值,cookiefilter美元);
}

功能猛击($日志)
{
toppath美元=日志.htm;
TS = fopen(toppath美元美元,+);
作用是:将内容($ TS,$日志。 ;
Fclose($ TS);
}
>

SQL
分析

如果使用这个函数,这个函数将绕过PHP的标准错误处理,所以你可以说你定义了错误处理程序(死亡())。

其次,如果有代码之前执行一个用户定义的程序错误,当时未执行,因此用户不会使用错误处理由用户自己编写的程序。 U3000

然后,PHP中有一套错误处理机制。它可以在PHP的错误处理的set_error_handler(),或使用trigger_error()函数抛出一个错误。

的set_error_handler()函数设置用户定义的错误处理功能。该功能用于创建用户自己的错误在运行过程中的处理方法。它需要创建一个错误处理函数的第一,然后设定误差水平。 U3000

使用:

复制代码代码如下所示:
功能自定义错误(错误errstr美元,美元,美元errfile美元,errline)

{

回声的错误代码:{ } { errstr美元与美元},r,n ;

编码错误的回声{ $ errfile }文件行:{ $ errline } r


PHP的回声版本

( /死亡);

}

set_error_handler(自定义错误
在这个函数中,您可以做任何事情,包括错误和日志文件的详细内容的格式化输出。

复制代码代码如下所示:
功能猛击($日志)
{
toppath美元=日志.htm;
TS = fopen(toppath美元美元,+);
作用是:将内容($ TS,$日志。 ;
Fclose($ TS);
}
自定义错误处理函数必须有这四个输入变量errno errstr美元,美元,美元,美元errfile,errline。

我是一个常数,代表误差水平。它也有一个整数集合和对应,但它通常使用的字符串值来表示,因此,语义更好。例如,e_warning,与4的二进制掩码,表示警告消息

接下来,这个功能是通过set_error_handler作为回调参数。这可以在PHP本地错误处理功能。应该指出的是,这种托管不管理所有类型的错误,如e_error,e_parse,e_core_error,e_core_warning,e_compile_error,e_compile_warning,和e_strict.these错误部分将在最原始的显示,或不。

StopAttack()函数写的正则表达式和呼叫猛击()()的日志文件,通过传递后,得到的,饼干,和调用猛击()。

复制代码代码如下所示:
exec_commond美元=(的| S)*(exec(的| +)+(S | x)P W +)(的| S)*;
simple_xss美元=(的| S)*((% 3C)|)*(的| );
eval_xss美元=(的| S)*((65)| E)( S)*((76)| V)( S)*(% 61)(一)| 的)*(% 6c))*;
image_xss美元=(的| S)*((% 3C)|)*(的| );
script_xss美元=(的| S)*((73)| S)*((63)| C)( S)*(72)| R)×(69)×(69)×;
sql_injection美元=(的| S)*((27)|(')|(% 3D)|(=)|( /)|(% 2F)|()|((22)|(- | -){ 2 })|(占23)|(% 3b)|(;))+(的| S)*;
当HP遇到错误时,它给出了错误脚本的位置、数量和原因,许多人说这没什么大不了的,但是揭示实际路径的后果是不可想象的。一些入侵者,这个信息是非常重要的,但事实上,有很多的服务器,有这方面的问题。一些网络管理员只需设置display_errors在PHP配置文件,但我认为这种方法太消极了。有时候,我们需要PHP返回错误信息,它可以调试。还需要提供给用户,甚至浏览其他网页的时候,这是错误的。但set_error_handler(),这些矛盾都是可以解决的。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部