寫PHP的一些安全性問題

怕自己忘記,隨手筆記一下:

.php.ini 中的 register_globals = off;

如果不能改變php.ini的話,可以利用下面的code

[php]
if(ini_get(‘register_globals’)){
foreach($GLOBALS as $key=>$val){
if(!in_array($key,array(‘GLOBALS’,’_POST’,’_GET’,’_COOKIE’,’_SERVER’,’_FILES’,’wind_in’))){
${$key}=”;
}
}
}
[/php]

或是

[php]
if ((isset($_REQUEST[‘GLOBALS’])

OR isset($_FILES[‘GLOBALS’]))

AND ini_get(‘register_globals’)) {

die(globals overwrite attempted.);

}
[/php]

.error_reporting(0);

.防止上傳的檔案執行,在http.conf加上
[php]
<Directory "/home/www/upload">
AllowOverride None
php_flag engine off
Allow from all
</Directory>
[/php]
或是在上傳的目錄下增加 .htaccess
[php]
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off
[/php]
 

1. SQL 注入攻擊 (SQL injection attack)
mysql_real_escape_string
2. 操縱 GET 的值 (manipulating GET variables)
is_numeric 、 regular expression(ereg(“^[0-9]+$”)
3. 緩衝器溢位攻擊 (buffer overflow attack)
前端 maxlength 、strlen 、 substr
4. 跨站腳本攻擊 (cross-site scripting)
strip_tags 、 htmlspecialchars
5. 操縱瀏覽器內的資料 (manipulating data inside the browser)
假設Tamper Data
6. 遠程表格遞交 (remote form posting)
random token(md5、uniqid、rand)