我试图通过查看我是否有用户所请求项目的图片来验证表单,因此我需要确保在检查图像/ 项目 .jpg时是否保留在images文件夹中存在。用户是否有任何方式可以从images目录向后搜索并选择一个无效的项目,或者这样可以验证我的表单?
<?php if(file_exists("images/".htmlentities($_GET["location"]).".jpg"): ?>
images文件夹中没有目录,所以我不必担心它们的项目名称中使用“/”。
答案 0 :(得分:1)
否即可。据我记忆所及,htmlentities()
并未转义空字节\0
,点.
,斜杠/
和反斜杠{{1} }。
空字节截断您的路径/文件名。点使得相对路径遍历(\
=当前目录,.
=父目录,..
(Windows)和\
=根目录。)
现在,请考虑将您插入的变量设为/
,如果您计划甚至提供“&#39; image&#39;”,请担心。
答案 1 :(得分:0)
不,你应该总是使用pics /托管文件夹.htaccses来防止直接ACCSES:
我想补充一点:
<FilesMatch "\.(htaccess|htpasswd|ini|php3|phps|fla|psd|log|sh|php|exe|asp|aspx|zip|html|js|htm|htpasswd|inc|bak|bmp)$">
Order Allow,Deny
Deny from all
</FilesMatch>
我还建议您使用HTMLPURIFIER要么更安全:
使用净化器,它看起来像:
<?php if(file_exists("images/".$purifier->purify($_GET["location"]).".jpg"): ?>