这两天用360网站安全检测网站,检测出SQL注入漏洞和XSS跨站攻击脚本N多项bug,然后上网找各种资料,把大部分的资料都看了一遍,最后自己总结了如下代码:
a、防止SQL注入代码:
//防止SQL注入 hxm_20140701 只对字符串有效
function clean_SQLinject($string){
if(!get_magic_quotes_gpc()){
$string = mysql_real_escape_string($string);
$string = addslashes($string);
}
$string = str_replace("_","\_",$string);
$string = str_replace("%","\%",$string);
return $string;
}
b、防止XSS跨站攻击代码:
//防止xss跨站攻击 hxm_20140701 数组或字符串都有效
function clean_xss(&$string){
if(!is_array($string)){
$string = trim($string);
$string = strip_tags($string);
$string = htmlspecialchars($string);
$string = str_replace (array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string);
$no = '/%0[0-8bcef]/';
$string = preg_replace ($no, '', $string);
$no = '/%1[0-9a-f]/';
$string = preg_replace ($no, '', $string);
$no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
$string = preg_replace ($no, '', $string);
return True;
}
$keys = array_keys($string);
foreach($keys as $key){
clean_xss($string[$key]);
}
}
c、后来改文件时候很多地方的查询语句的where条件用到了大量post或get过来的参数,一个一个过滤闲太麻烦,所以发明了如下函数:
d、对传过来的post和get参数组直接过滤,包含过滤SQL注入和XSS攻击:
//对传过来的整个post数组进行SQL注入和XSS过滤 hxm_20140701
function clean_post($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标记转换 防止xss
return $post;
}
备注(关于XSS):
1、php防止XSS跨站脚本攻击的方法:是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 。
2、在使用htmlspecialchars()函数的时候注意第二个参数, 直接用htmlspecialchars($string) 的话,第二个参数默认是ENT_COMPAT,函数默认只是转化双引号(“), 不对单引号(‘)做转义.
3、所以,htmlspecialchars函数更多的时候要加上第二个参数, 应该这样用: htmlspecialchars($string,ENT_QUOTES).当然,如果需要不转化引号,用htmlspecialchars($string,ENT_NOQUOTES).
4、另外, 尽量少用htmlentities, 在全部英文的时候htmlentities和htmlspecialchars没有区别,都可以达到目的.但是,中文情况下, htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。
5、htmlentities和htmlspecialchars这两个函数对 '之类的字符串支持不好,都不能转化, 所以用htmlentities和htmlspecialchars转化的字符串只能防止XSS攻击,不能防止SQL注入攻击.
什么是网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。有没有想过这样一个问题:在google的搜索框内输入一个词语,和这个词语相关的内容怎么就显示出来了呢?可以说,类似google、百度这样的搜索引擎也是网络爬虫。用...
dm8搭建dmhs时报错MGR[ERROR]: 库文件 libdmhs_exec.so 未找到, 出错: 0DMHS> start execCSL[ERROR]: 加载执行模块失败查看日志MGR[INFO]: 正在加载执行模块...MGR[ERROR]: 库文件 libdmhs_exec.so 未找到, 出错: 0MGR[ERROR]: 日志执行启动失败解决方法:ldd追踪库文件[[email protected] bin]$ ldd libdmhs_exec.so linux-vdso.so
1. 定义Multi-Version Concurrency Control ,一种多版本并发控制协议,只在数据库引擎为InnoDB、隔离级别为RC、RR的情况下存在。MVCC是通过版本号和快照/一致性视图,实现了事务隔离性,但只在事务级别为已提交读和可重复读时有效。MVCC最大的好处是:读不加锁,读写不冲突。2. 工作原理InnoDB引擎中,每行数据都有三个隐藏字段,唯一行号(DB_ROW_ID字段)、事务ID(DB_TRX_ID字段)和回滚指针(DB_ROLL_PTR字段)。
链接牛客: 二叉搜索树与双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路这个代码是借鉴网上的,整体结构和中序遍历非常类似,只不过将原本输出那部分的操作换成了改变结点的方向。代码/*public class Solution { TreeNode head = null; TreeNod...
---------------------- android培训、java培训、期待与您交流! ----------------------一、final 根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以
参考http://www.cnblogs.com/zhangkeyu/p/6647467.html该博文。Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放...
从DH算法我们可以看到,公钥-私钥组成的密钥对是非常有用的加密方式,因为公钥是可以公开的,而私钥是完全保密的,由此奠定了非对称加密的基础。非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。因此,如果小明要加密一个文件发送给小红,他应该首先向小红索取她的公钥,然后,他用小红的公钥加密,把加密文件发送给小红,此文件只能由小红的私钥解开,因为小红的私钥在她自己手里,所以...
一、Hive自定义函数类型UDF(User-Defined-Function)函数一对一的关系,输入一个值经过函数以后输出一个值在Hive中继承UDF类,方法名称为evaluate,返回值不能为void,其实就是实现一个方法UDAF(User-Defined Aggregation Function) 聚合函数多对一的关系,输入多个值输出一个值,通常与groupBy联合使用UDTF(User-Defined Table-Generating Functions) 函数一对多的关
http://www.vaannila.com/struts-2/struts-2-example/struts-2-hello-world-example-1.html这个是Struts2.0给的HelloWorld例子其中引入了。commons-io-1.3.2.jarfreemarker-2.3.16.jarognl-3.0.jarstruts2-core-2.2.1.1.jarxwork-core-2.2.1.1.jar这5个JAR包,但在2.2版本中少了下面两个JAr就会报错,所以要把这两个JAR
——专访付品德原文链接:http://www.esri.com/news/arcwatch/0312/gis-in-education-the-web-and-beyond.html网络正在迅速的改变着地理信息系统的外观。网络服务和新型工具更便于网络地理空间应用技术的研发,实现地理区域共享,加强项目合作。网络地理信息系统同时提供了大量实用的网络资源方便人们使用,使得研究活动和课堂设计更容易
mysql训练题:1.表名和字段–1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数2.建表#–1.学生表 #Student(s_id,s
今天上午,华为消费者BG软件部总裁王成录正式发布了鸿蒙OS 2.0手机开发者Beta版本,支持运行安卓应用,P40、Mate30系列可申请公测。王成录表示,今年已有美的、九阳、老板电器、海雀科技搭载鸿蒙OS,2021年的目标是覆盖40+主流品牌1亿台以上设备。鸿蒙OS为万物互联而生,拥有更好体验,更多入口。他举例,有了鸿蒙OS,京东App可以运行在电视,甚至是冰箱等带屏设备,上亿设备将成为京东新入...