项目总结

来源:互联网 发布:java 树结构实现 编辑:程序博客网 时间:2024/06/08 11:20

1、排序导致的数据显示错乱
项目中遇到了一个问题,就是从数据库取出数据后,在页面显示重复数据。
比如同一条数据,在第一页和第二页都显示了。
但是这条数据在数据库是没有重复的,如果通过网页查询ID方式查的话数据也是不重复显示的。
也就是说,他只可能是在获取所有数据后,在分页处理上出错了。

经查实,是由于按照updated_time排序造成的。注:由于是一次性导入大量数据进数据库,所以他们的updated_time 都一样。
这里写图片描述

将排序方式改为其他(如ID)就不会出错。
但原因尚未找到。

2、绑定事件未响应
接手了一个静态页面。需求是把他改为动态的(即动态获取后台数据并填充)。
然后遇到了一个问题就是<li>标签的点击事件不起作用。
经排查,发现<li>绑定事件操作在<li>标签生成之前!
一般来说是不会犯这样的错误,但由于之前是静态页面,写代码的人并未(也不需要)考虑到这点,所以就发生了。
解决方法最好是将事件绑定在父级,利用事件冒泡来绑定。或者使用回调(不建议)
这里有个问题就是,点击的时候,target并不是<li>标签,而是下级<span>标签,所以利用事件冒泡的时候要注意一下。

3、案例分析
公司有个项目中敏感数据被泄露了。
个人资料接口中存在越权漏洞,攻击者通过修改cookie中的uid参数越权查询任意会员资料(包含敏感信息)
且该漏洞为外部报告。
——————————————————————————————————————
处理结果:
业务安全:会员资料加密存储——会员敏感资料脱敏展示——查询敏感信息的接口统一到一台服务器——添加IP访问限制和密钥限制——添加频率监控并限制调用频率——进行行为画像(如果一个人只是不停的登陆账号而不是登陆后进行其他操作(如查询、购买等),那这个账号应该进行监控)——敏感操作日志记录审计

系统安全:代码review——基本的漏洞防护(XSS、SQL注入、CSRF等)——安全测评

4、录入大量数据进数据库
写了一个脚本,将大量数据粘贴到<textarea>框,然后提交到后台进行sql语句录入数据。
奇怪的是,近2000数据,中间丢失了几个。而且丢失数量固定(2)。
猜测是数据分割原因(我利用\n来分割每条数据)
具体情况不明。而且并未报错(所有数据都是在同一条sql语句中插入的)。

烦死了,之前写的全不见了。

5、textarea实时数字
考虑键盘与鼠标,要用oninput 和onpropertychange事件,后者用于IE9以下浏览器
$(obj).on(“input propertychange”,function(){})

6、sql注入
不要使用sql拼写,使用封装好的sql,不然会被怼死

7、前端数据
一定要检查前端数据,不然url被有心人利用会盗取数据。也是一个安全问题。也会被怼死

8、PHP数组
不要使用 arr=[1,2,3];arr=Array(1,2,3);

9、url编码
前端传来一串字符串给后台,然后后台需要解码出结果。传的过程中,字符串中的加号变成了空格,所以后台解码出错。
这是很常见的一个错误,在url中带参数传的时候,尽量使用js的encodeURIComponent() 方法编码。后台一般不用解码,因为容器一般会自动解码。如果有问题你就解码看看呗。

10、接口检测
对于一系列的接口,如A接口检验A,通过后调用B接口检验B,再调用C接口检验C,后面的接口理论上都要检查前面的接口所需的权限。不然有人直接调用C接口的话,你就傻了。如登录状态检测,每个接口都要检查。

11、抛异常
在最顶层,一定要写try catch。然后尽量在第二层抛异常,不要在很深的地方抛异常,不然会难定位。如果不嫌麻烦,可以抛很详细的异常,这样在很深的地方抛也没关系。不过这样添加mo和经分上报就麻烦咯。

原创粉丝点击