作者:KisChang
user-{$username}.jpg,不建议,如果有用户名为 test/../../../xxx/xxx.xxx? 替换的最终结果是 user-test/../../../xxx/xxx.xxx?.jpg /xxx/xxx.xxx为一个系统目录 我猜想应该可以访问到
View Article作者:疯子船长CasYang
问题1:看了楼上的回答,1楼的就是正解了。 问题2:先稍微反驳下2楼的评论,用户名一般只允许英文数字下划线,出现 / 这种的话,已经不只是文件目录问题,还有SQL注入等安全问题。 图片保存路径是可以自己定义的,如果不是,那就是你的技术能力不够,多看几篇文章。文件改名可以考虑加上时间戳,这样可以留存用户历史照片,对历史照片做另外的记录(有必要的话)。 问题3:!!!文件换到非项目目录,很重要!!!...
View Article作者:疯子船长CasYang
# 补充回复,前面没点stack的地址看。 看了下stack的问题,发现同样是Java项目,楼主好好看书多查点资料,前面两个问题都是有很多解决方案的了
View Article作者:KisChang
啊哦,被反驳了… 可能你没有理解我的意思,我只是提出了一种关于这样实现可能带来的问题,当然,你从其他方面去限制会减少问题的发生,但不会意味着所有的假设你都能做到提前预防 例如:如果你没有限制用户名长度呢?linux最大文件名255字符 我觉得对于新手还是不要告诉他什么是对的,一步一步趟错走过来,更加有利一些吧
View Article作者:疯子船长CasYang
抱歉,用词有点不当。也不是说你说的不对,考虑的角度可能不一样。 用户名这种的已经算是规范了,作为新手,还是应该了解下目前的常规做法,看书看规范,思考为什么大家都这么做,而不是采用其他的做法? 基于常规做法之后,还有没有其他的坑存在?...
View Article作者:疯子船长CasYang
指的是非项目本身的文件。 比如你说的用户上传的图片,或者生成的静态页,这些一旦有redeploy(特别是未shutdown的redeploy)就可能被清掉。 如果是静态页用到的js/css等,可以自己决定。 如果是项目系统内部的文件,就跟着项目就好了。 /* 回答仅基于自己的了解,有不同或更好的方案可以一起讨论 */
View Article
More Pages to Explore .....