簡體   English   中英

SCRIPT_NAME 在 PHP 中有什么危險?

[英]How is SCRIPT_NAME dangerous in PHP?

我在我的 php 博客站點中使用下面的行,這有什么危險?

<form action="<?php echo $SCRIPT_NAME. "?id=" . $validentry; ?>" method="post">

我還register_global offmagic_quotes_gpc()
我正在使用 php 5.2。
我試過$_SERVER['php_self'] ,但這沒有用。

SCRIPT_NAMEPHP_SELF大多包含相同的值。 兩者都包含REQUEST_URI的網絡服務器規范化版本(即刪除了相對路徑部分)。

您在這里的實際安全問題不是使用htmlspecialchars() 如前所述,只需使用正確的關鍵案例來輸出PHP_SELF

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8") . $validentry ...

這似乎不會造成任何危險,但它表明您啟用了register_globals On(如果您不是真的很小心,這可能很危險)。 在您的配置文件中將register_globals設置為 Off 並使用$_SERVER['SCRIPT_NAME']或者,最好是$_SERVER['PHP_SELF'] ,另請參閱PHP 手冊上有關$_SERVER superglobal 的頁面,以及此注釋

$_SERVER["SCRIPT_NAME"] => /admin/products.php (虛擬路徑) $_SERVER["PHP_SELF"] => /admin/products.php/someExtraStuff (虛擬路徑)

SCRIPT_NAME 是在 CGI 1.1 規范中定義的,PHP_SELF 是由 PHP 自己創建的。 有關測試,請參閱http://php.about.com/od/learnphp/qt/_SERVER_PHP.htm

我不相信這在 PHP5.2 中有效,除非您自己定義了$SCRIPT_NAME
在這種情況下,正確的代碼應該是$_SERVER['SCRIPT_FILENAME']
SCRIPT_FILENAME不是用戶可控的。
$_SERVER['PHP_SELF']是用戶可控的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM