मेरा मानना है कि अपने कोड निर्देशिका ट्रावर्सल हमलों का प्रभाव पड़ सकता है - अगर किसी को एक fileid
के रूप में "/../../foo" प्रदान की है, तो पथ "filename/../../foo.txt"
है, जो एक वैध लक्ष्य हो सकता है किया जाएगा। देखें: http://en.wikipedia.org/wiki/Directory_traversal
मैं @jeroen साथ हूँ और @ shiplu.mokadd.im जो अपने इनपुट sanitizing पता चलता है - यह सोचते हैं fileid
एक नंबर है तो intval()
समारोह आप ठीक हो जाएगा:
$num = $_GET['fileid'];
$num = intval($num);
if($num == 0) {
echo "Invalid file ID: Not a number.";
exit;
} else {
$fileName = 'filename' . $num . '.txt';
if(!file_exists($fileName)) {
echo "Invalid file ID: Doesn't exist.";
} else {
// do something
}
}
Ext3 में/4 एफएस '\ 0' वर्णों को सिर्फ –
छीन लिया गया है, मैं सभी संदेहों को हटा दूंगा और इनपुट को मान्य कर दूंगा; एक श्वेतसूची का उपयोग करके, रेगेक्स का उपयोग करके, int को कास्ट करना या जो भी सर्वोत्तम होता है। – jeroen
% 00 --- http://ha.ckers.org/blog/20060914/php-vulnerable-to-null-byte-injection/ – user956584