1.服务端进行CSRF防御
服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。
(1).Cookie Hashing(所有表单都包含同一个伪随机值):
这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了
(2).验证码
  这个方案的思路是:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串,厄…这个方案可以完全解决CSRF,但个人觉得在易用性方面似乎不是太好,还有听闻是验证码图片的使用涉及了一个被称为MHTML的Bug,可能在某些版本的微软IE中受影响。
(3).One-Time Tokens(不同的表单包含一个不同的伪随机值)
  在实现One-Time Tokens时,需要注意一点:就是“并行会话的兼容”。如果用户在一个站点上同时打开了两个不同的表单,CSRF保护措施不应该影响到他对任何表单的提交。考虑一下如果每次表单被装入时站点生成一个伪随机值来覆盖以前的伪随机值将会发生什么情况:用户只能成功地提交他最后打开的表单,因为所有其他的表单都含有非法的伪随机值。必须小心操作以确保CSRF保护措施不会影响选项卡式的浏览或者利用多个浏览器窗口浏览一个站点。

2.预防xss攻击
php防止XSS跨站脚本攻击的方法:是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 。
在使用htmlspecialchars()函数的时候注意第二个参数, 直接用htmlspecialchars($string) 的话,第二个参数默认是ENT_COMPAT,函数默认只是转化双引号(“), 不对单引号(‘)做转义

3.预防sql注入
1、php.ini 中把 safe_mode 打开
2、 safe_mode_gid = off
3、 关闭危险函数

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

4、 关闭PHP版本信息在http头中的泄漏 expose_php = Off
5、 打开magic_quotes_gpc来防止SQL注入 magic_quotes_gpc = On 这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换 比如把 ’ 转为 '等,这对防止sql注射有重大作用
6、错误信息控制 error_reporting = E_WARNING & E_ERROR 只显示警告以上
7、 错误日志 建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因

log_errors = On error_log = D:/usr/local/apache2/logs/php_error.log
8、if (!get_magic_quotes_gpc()) { lastname=addslashes(lastname = addslashes(lastname=addslashes(_POST[‘lastname’]); } else { $lastname =
$_POST[‘lastname’]; }

get_magic_quotes_gpc 过滤后不用 addslashes 以免重复过滤

<?php     function   post_check( $post )    {    if   (!get_magic_quotes_gpc())  // 判断magic_quotes_gpc是否为打开    {    $post   =  addslashes ( $post );  // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤    }    $post   =  str_replace ( "_" ,  "\_" ,  $post );  // 把 '_'过滤掉    $post   =  str_replace ( "%" ,  "\%" ,  $post );  // 把' % '过滤掉    $post   =  nl2br ( $post );  // 回车转换    $post = htmlspecialchars( $post );  // html标记转换       return   $post ;    }    ?>

关于SQL注入,不得不说的是现在大多虚拟主机都会把magic_quotes_gpc选项打开,在这种情况下所有的客户端GET和POST的数据都会自动进行addslashes处理,所以此时对字符串值的SQL注入是不可行的,但要防止对数字值的SQL注入,如用intval()等函数进行处理
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。


php防止SQL注入攻击与XSS攻击的例子参考

在php中防止SQL注入攻击与XSS攻击的二个简单方法,感兴趣的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!

本节内容:

SQL注入攻击与XSS攻击的防范方法

在php编程中,所有有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss。

注意,中文要写出htmlentitiess($name,ENT_NOQUOTES,GB2312)。

mysql_real_escape_string()

SQL语句中,如果有类似这样的写法:

复制代码 代码示例:

"select * from cdr where src =".$userId;

要修改为:

复制代码 代码示例:

$userId=mysql_real_escape_string($userId)

另外,有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意,中文要写出htmlentities($name,ENT_NOQUOTES,GB2312) 。

【拓展阅读】

首先,来看下php中的sql注入攻击。

mysql_connect("localhost","root","123456")or die("数据库连接失败!");mysql_select_db("test1");$user=$_post['uid'];$pwd=$_POST['pass'];if(mysql_query("SELECT * from whereadmin= `username`='$user' or `password`='$pwd'"){echo "用户成功登陆..";} eles {echo "用户名或密码出错";}?>

以上代码用于检测用户名或密码是否正确,可是在一些恶意攻击者中提交一些敏感代码,后果可想而知。

post判断注入的方式有2种。

1、在form表单的文本框输入 “or‘1’=1"或者"and 1=1”

在查询数据库的语句就应该是:

SELECT admin from where login = `user`=''or‘1'=1' or `pass`=‘xxxx'

当然也不会出现什么错误,因为or在sql的语句中代表和,或的`意思。当然也会提示错误。

当时我们已经发现了可以执行SQL语句之后就可以查询当前表的所有信息。例如:正确的管理员账户和密码进行登录入侵。。

修复方式1:

使用javascript脚本过滤特殊字符(不推荐,指标不治本)

如果攻击者禁用了javascript还是可以进行SQL注入攻击。。

修复方式2:

使用mysql的自带函数进行过滤。

// 省略连接数据库等操作$user=mysql_real_escape_string($_POST['user']);mysql_query("select * from admin whrer `username`='$user'");?>

2、XSS攻击以及防范。

提交表单:

接收文件:

if(empty($_POST['sub'])){echo $_POST['test'];}

代码很简单,只是模拟了下使用场景。

PHP 预防CSRF、XSS、SQL注入攻击相关推荐

  1. 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?

    一.XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie ...

  2. CSRF, XSS, Sql注入原理和处理方案

    CSRF 含义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写 ...

  3. 基于 WebGoat 平台的 SQL 注入攻击

    基于 WebGoat 平台的 SQL 注入攻击 扩展功能参考: https://blog.csdn.net/HZC0217/article/details/126790211 使用实例参考: http ...

  4. Spring MVC防御CSRF、XSS和SQL注入攻击

    本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cross site script跨站脚本攻击). 说说CSRF 对CSRF来 ...

  5. 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...

    第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...

  6. 浅析:XSS攻击、SQL注入攻击和CSRF攻击

    1.XSS(Cross Site Script)攻击 跨站脚本攻击,是在用户浏览网页时向用户浏览器中执行恶意脚本的攻击方式. 跨站脚本攻击分有两种形式:反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以 ...

  7. 86.3 安全性问题 xss、DDOS、CC、sql注入 攻击等

    主键id 暴露在url 中会暴露表的总量,而且如果监视一段时间主键,就能很低成本地得到这个网站的用户增量. Cookie中的信息是明文保存的,意味着攻击者可以通过猜测并伪造Cookie数据破解系统. ...

  8. 预防SQL注入攻击之我见 转

    1. SQL注入攻击的本质:让客户端传递过去的字符串变成SQL语句,而且能够被执行. 2. 每个程序员都必须肩负起防止SQL注入攻击的责任. 说起防止SQL注入攻击,感觉很郁闷,这么多年了大家一直在讨 ...

  9. 45-互联网安全架构-Web常用攻击手段之XSS脚本SQL注入攻击

    文章目录 1. 什么是XSS攻击&XSS攻击应用场景 2. XSS脚本攻击原理分析 3. 使用过滤器防御XSS攻击 4. 使用#传递参数防御SQL注入攻击 1. 什么是XSS攻击&XS ...

最新文章

  1. c++ QT学习笔记
  2. 恋愛SLG-「猫セット」ゲットチャレンジ!
  3. 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法
  4. STL的pair键值对
  5. C# 生成 MongoDB 中的 ObjectId
  6. 【渝粤教育】国家开放大学2018年春季 0579-22T电路及磁路(2)(一) 参考试题
  7. html 表格文字颜色 css,CSS 表格-JavaScript中文网-JavaScript教程资源分享门户
  8. 互联网日报 | 3月2日 星期二 | ​互联网人薪资报告:2021 开年薪资环比增长 7%...
  9. php返回ajax必须是数组,ajax返回数组,页面接收不到数据
  10. DS博客大作业--树(李天明组)
  11. python为何排名越来越前_为什么C#排名和Python相差越来越大?
  12. 结构体内存对齐的原则及原理
  13. python stdout stderr 一起输出_关于python:您可以愚弄isatty并分别记录stdout和stderr吗?...
  14. C#使用NPOI根据模板生成Word文件功能实现
  15. Go的安装使用(一)
  16. 【新知实验室】体验腾讯云音视频
  17. Linux SSH无密登录配置
  18. c语言char a什么意思,C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?...
  19. Resolver error Error Downloading VS Code Server failed - please install either curl or wget on the
  20. Javascript复习必记知识点

热门文章

  1. 浅析小我私家对内链的需要性的一些意见
  2. 销售人员职业化塑造之路--心理素质篇
  3. Tainted: G O 分析(Tainted kernels)
  4. JavaScript时间戳
  5. mysql企业实战_实战MySQL服务器企业技术 实战进阶学习篇 企业级MySQL实战进阶视频教程...
  6. 新开淘宝店怎么提升信誉,是不是真的要刷钻?
  7. TouchSlide和iconfont.js冲突 Uncaught TypeError: j.search is not a function
  8. js中promise原理及手动基本实现_V2
  9. stm32f103端口置位复位函数
  10. Neural Network 神经网络