(1)无论是客户端,还是服务器端,都需要对输入输出的内容做过滤,或用转码的方式,或者用其他方式,不过,转码方式按道理说更好,因为无论什么XSS攻击命令,到你这里一律变成编码,命令功能失效。输入部分,比如说你文本框、输入框、URL跳转等等。服务器输出也需要做过滤,因为很多服务器里数据的输入并不都经过了输入过滤,如一些拷贝、数据批量导入导出等等,这些未经过滤的输入,都有可能导致那些坏东西混入服务器数据里。这叫啥攻击我忘了,反正是二次攻击,先存进你的数据库,然后利用它再攻击!
很多MVC框架都已经处理了这些内容,如angularJS
(2)JS文件中某些函数竟然含有执行自由命令的函数,这让人大吃一惊,留这样的口是非常危险的。我感觉,对于一些不算复杂的业务系统来说,还是尽量不要写这样的框架。
一些输入命令就能执行很多操作的软件,我们用的太多了,dos命令、一些特殊的http请求,这些都含有类似后门一样的命令,首先把他们关掉。
(3)密码不能明文编辑
当你的界面上写有password属性,尽管这是必须的字段,但是尽量不要用这样的名字,只需要将请求的头文件加密传输即可,混用。
(4)JS漏洞:密码作为GET请求的一部分进行提交。
某html文件中的表单将密码作为HTTP GET 请求的一部分进行提交,这可能会造成密码被显示、记录或存储在浏览器缓存中。不要这样写,至少需要加密用post方法传输。再安全的就是https请求。
(5)JS漏洞:密码框启用浏览器自动完成功能。
密码框禁用浏览器自动完成功能,autocomplete="off"。
(6)页面跳转时,这样写,window.location.href= window.location.href + “....”这样写太容易添加攻击代码,慎用啊!