मैं एक आवेदन POST
एचटीएमएल 5 कैनवास डेटा है कि तब बेस 64 में encoded और सभी को दिखाई देता है के लिए अनुमति देता है कि निर्माण कर रहा हूँ। मैं एक वास्तविक .png फ़ाइल में डेटा पार्स करने और सर्वर पर संग्रहीत करने पर विचार कर रहा हूँ, लेकिन बेस 64 मार्ग मुझे एक डेटाबेस में छवियों की दुकान और अनुरोधों को कम करने की अनुमति देता है। छवियां अद्वितीय हैं, कुछ, और पृष्ठ अक्सर ताज़ा नहीं किया जाएगा।सत्यापित किया जा रहा base64 इनकोडिंग छवियों
jQuery का एक सा कैनवास डेटा data:image/png;base64,iVBORw...
ले जाएगा, और एक PHP स्क्रिप्ट है कि यह तो जैसे लपेटता के साथ पास कर देता है: <img src="$data"></img>
हालांकि, सुरक्षा आधारशिला है और पासिंग को रोकने के लिए बेस 64 कैनवास डेटा को मान्य करने की जरूरत है POST
अनुरोध में दुर्भावनापूर्ण डेटा। मेरे प्राथमिक चिंता का विषय <img>
टैग में इंजेक्ट किया जा रहा है और पृष्ठ लोड पर अनुरोध किया जा रहा से बाहरी URL को रोकने के लिए है।
$data = (isset($_POST['canvas']) && is_string($_POST['canvas'])) ? $_POST['canvas'] : null;
$base = str_replace('data:image/png;base64,', '', $data);
$regx = '~^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$~'
if ((substr($data, 0, 22)) !== 'data:image/png;base64,')
{
// Obviously fake, doesn't contain the expected first 22 characters.
return false;
}
if ((base64_encode(base64_decode($base64, true))) !== $base64)
{
// Decoding and re-encoding the data fails, something is wrong
return false;
}
if ((preg_match($regx, $base64)) !== 1)
{
// The data doesn't match the regular expression, discard
return false;
}
return true;
मुझे यकीन है कि मेरे वर्तमान सेटअप काफी सुरक्षित <img>
टैग में डाला जा रहा से बाहरी URL को रोकने के लिए है, और नहीं, क्या किया जा सकता है अगर बनाना चाहते:
मैं वर्तमान में इस तरह एक सेटअप छवि डेटा को आगे सत्यापित करने के लिए? ऐसा करने का
यह महान काम किया! स्वीकार किए जाते हैं। 'imagepng' फेंक देगा 'आपूर्ति किया गया तर्क मान्य छवि संसाधन नहीं है' यदि छवि डेटा मान्य नहीं है, तो मैंने उस कार्य को 'if' कथन में लपेटने के लिए इसे विफल करने के लिए लपेट लिया है। – ssh2ksh
आप 'imagecreatefrompng ($ बेस 64) का उपयोग कर सकते' अगर रिटर्न फाल्स, न कि चित्र – mghhgm