- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
毫无疑问,我们应该对应用程序进行编码以保护自己免受恶意、好奇和/或粗心的用户的攻击,但是现在和/或 future 的同事呢?
例如,我正在编写一个基于 Web 的 API,它接受来自用户的参数。其中一些参数可能会映射到配置文件中的值。如果用户弄乱了 URL 并为参数提供了无效值,我的应用程序在尝试从不存在的配置文件部分读取时会出错。所以当然,我会在尝试从配置文件中读取之前清理参数。
现在,如果在路上,另一个开发人员正在开发此应用程序,为该参数添加另一个有效值,该值将通过清理过程,但不将相应的部分添加到配置文件中。请记住,我只是保护应用程序免受不良用户的侵害,而不是不良编码人员。我的申请会失败。
一方面,我知道所有更改都应该在投入生产之前进行测试,这样的事情无疑会在一个体面的测试 session 中出现,但另一方面,我尝试构建我的应用程序以最好地抵抗失败尽可能。我只是不知道将同事对我的代码的修改包含在潜在故障点列表中是否“正确”。
对于这个项目,我选择不检查配置文件的相关部分是否存在。作为当前的开发人员,我不允许用户指定会导致失败的参数值,因此我希望 future 的开发人员不要将可能导致失败的行为引入生产环境......或者至少消除这样的测试中的案例。
你怎么看?
懒惰...或哲学上的声音?
最佳答案
“我只是不知道将同事对我的代码的修改包含在潜在故障点列表中是否“正确”。”
阻止你的同事破坏东西是不对的。
您不知道您的软件将用于什么新用途。不知道以后怎么修改。
相反,这样做。
编写简单正确的软件,将其投入生产,不再担心有人“破坏”某些东西。
如果您的软件实际上简单,其他人可以维护它而不会破坏它。
如果你把它弄得太复杂,他们会 (a) 无论如何都会破坏它,不管你做了什么,并且 (b) 讨厌你让它变得复杂。
所以,让工作尽可能简单。
关于validation - 您是否应该编写代码以保护您的应用程序免受不良编码人员的侵害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233986/
我在使用 Heroku 时遇到问题,当我尝试部署我的应用程序时,它没有运行 run assets:precompile而且我还没有在本地预编译我的 Assets ,我在 Git 中没有 list 文件
(这是为您提供围绕我的问题的背景信息。您可以跳到“问题”并阅读该内容,然后如果您想直接进入主题,则可以返回并浏览背景知识.抱歉,这是一面文字墙!) 我需要将一堆非常非常糟糕的 JSON 存储在数据库中
我是一名优秀的程序员,十分优秀!