一、防止sql的注入
前端传给后端的字段,在写入数据的时候需要一个数据类型 判断、预处理,
避免出现非正常数据,干扰、或者使数据库存在漏洞,
可以在mysql_real_escape_string() 这个过滤数据,手动检查每一个数据是否为正确数据类型
参数化SQL:是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,用@或?来表示参数。
二、XSS攻击:经常在跨站点脚本攻击,一般客户输入的一些数据到网站,其中包括客户端脚本JavaScript。假设没有进行过滤,那就会输出数据到另一个web页面 ,那这个脚本就会被执行
可以使用PHP的htmlentities() 函数,过滤后再输出到浏览器中
三、CSRF:跨站点请求伪造,是指一个页面发出的请求,看起来就像是网站的信任用户,但是是伪造的
防止:一般来说,确保用户来自你的表单,并且匹配每一个你发送出去的表单。有两点一定要记住:
对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL。
生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。 如laravel中的 _token
代码注入:代码注入是利用计算机漏洞通过处理无效数据造成的。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕的代码可以允许一个远程文件包含并执行。如许多PHP函数,如require可以包含URL或文件名。
防止代码注入
过滤用户输入
在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用require/include/fopen的远程文件