php防sql注入,同时要求记录下攻击的数据

来源:百度知道 编辑:UC知道 时间:2024/05/24 05:00:41
我做的PHP网站,要是被人sql攻击了,我想记录下攻击者的IP地址,攻击的时间,攻击的代码,攻击的哪个页面之类的信息,请问该如何做,最好有代码~
具体实施该怎么做?

sql过滤参数放在$keyword变量里,如单双引号、and、or空格等,这里过滤了get post cookie变量,根据需要在$input删减,例如文章提交的页面就没必要过滤post变量。
攻击信息保存在sql.txt

<?php
$keyword = array("'",'"','and','or',' ');
$input = array(&$_GET,&$_POST,&$_COOKIE);
foreach($input as $k){
foreach($k as $name=>$value){
foreach($keyword as $key){
if(strpos($value, $key)!==false){
$fp=fopen('sql.txt','a');
fputs($fp,date("Y-m-d H:i:s")."\t$_SERVER[REMOTE_ADDR]\t$_SERVER[SCRIPT_NAME]\t$value\r\n");
fclose($fp);
die("非法参数");
}
}
}
}

你过滤参数的时候,写个日志就是了。。
比如参数里有sql关键字,你就可以给出个提示。然后把这个参数写到文件或者数据库(还有访问者的ip,时间的话,用数据库会直接有默认值。)
过滤通过了,就正常访问,否则记录。

写个“过滤参数”吧