XSS
跨站脚本攻击(Cross Site Scripting),为了不和[层叠样式表](Cascading Style Sheets)的缩写混淆,故将跨站脚本攻击缩写为XSS。xss漏洞可以让别的脚本进行执行,形成这个问题的主要原因多数是用户的输入没有被转义,而被直接执行。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
CSRF
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本,但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比[XSS]更具危险性。
攻击者只需要引诱已经登录的用户访问这个网站就可以获得用户的session了,服务器程序,根本无法判断是不同的网站发出的请求。
可以通过在session中添加随机值解决,攻击者构造相同的随机值难度比较大,所以我们只需要在接收端做一次校验就能轻易识别出该请求是否伪造。
SQL注入
SQL注入:所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
REST的设计就是通过URL设计资源、请求方法定义资源的操作,通过Accept决定资源的表现形式,然后服务端返回Status反映资源状态的变化。