包含thinkphpxss的词条

第三方分享代码
hacker 3年前 (2022-07-02) 软件技术 221 5

目录介绍:

thinkphp 的上传代码中。如何让上传的文件的保存名为它自己的名字,而不是时间戳生成的名字

可以设置啊,saveRule 上传文件命名规则 留空则使用原来文件名保存;

网上随便一搜索,都是这个,

thinkphp怎么做才是安全的sql防注入

1:抵御99%的攻击方式,适用于90%的场景.

当网站不涉及复杂的用户交互时,可以对用户所有提交的文本进行htmlspecialchars函数处理。

在THINKPHP3.2版本中的操作步骤是:

一:在项目配置文件中添加配置: 'DEFAULT_FILTER' = 'htmlspecialchars', //默认过滤函数

二: 使用框架带的I方法获取来自用户提交的数据;

例子:M('Member')-save(array('content'=I('post.content')));这样添加的content内容是经过htmlspecialchars处理过的.

提问:为什么经过htmlspecialchars处理过的文本可以保证是安全的?

回答:纵观XSS各种攻击方式绝大多数依赖'" 这几个字符中的一个或几个对内容进行注入攻击。而htmlspecialchars函数的作用就是将这些字符转换成无害的HTML 实体;

提问:为什么有这么好的方法,而还有好多网站还是被攻击.

回答:因为好多程序员总会粗心忘记使用这个方法,而遗漏某条数据的过滤。

2:对COOKIE进行IP绑定

cookie里面一般有自动登录信息和session_id,就算对cookie里面的内容全部加了密,cookie的信息一但被别人通过XSS攻击获取后也一样等同于把自己的帐号密码给了别人。

对cookie进行IP绑定,(当然也可以获取用户客户端更多的其它信息进行同时绑定)可以根据用户的IP来判断这个cookie是不是来原始授权用户。

典型的应用示例:

用户设置了自动登录时保存自动登录信息:

$auto=I('post.auto');//用户设置了自动登录

if(!empty($auto)){

cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周

}

用户关闭浏览器再次访问网站时,进行自动登录

if (!is_login()) {//是否未登录状态?

$auth=cookie('auto');

if(!empty($auth)){//是否未有自动登录cookie?

$data=unserialize(decrypt($auth));

if(!empty($data) !empty($data['username']) !empty($data['password']) !empty($data['last_login_ip'])){

$user=M('Member')-where(array('username'=$data['username'],'password'=$data['password']))-find();

if(!empty($user['id'])($user['last_login_ip']==get_client_ip())){//cookie帐号密码是否有效?//IP来源是否相同?

login_session($user['id'], $user['username'], $data['last_login_ip']);//用户自动登录成功

}

}

}

}

复制代码

优点:大多数场景下可使被XSS攻击盗取的cookie失效。缺点:由于IP存在多台电脑共用的可能,对绑定做不到十分精细。

3:为COOKIE添加httponly配置

最新版本的thinkphp已经支持此参数。

此参数可以保证cookie只在http请求中被传输,而不被页面中的脚本获取,现市面上绝大多数浏览器已经支持。

复制代码

4:HTML5值得观注的新特性:

iframe src="" sandbox

为iframe的增加的sandbox属性,可以防止不信任的Web页面执行某些操作.相信这个方法以后会被广泛使用。

复制代码

5:富文本过滤

富文本过滤是,XSS攻击最令人头疼的话题,不仅是小网站,就连BAT这样的巨头也是三天两头的被其困扰.

thinkphp为什么过滤style标签

xss过滤主要是应对传值的时候,防止恶意攻击者往Web页面里插入恶意html代码。

这种编辑器入库的根本不需要用xss过滤啊,可以用mysql_escape_string过滤一下入库,然后展示的时候用htmlspecialchars原型输出就可以了。

纠结,原生PHP很熟练,还有没有必要去学ThinkPHP

熟练也不行,原生的是基础,有便于理解。如果用原生的做项目会出现很多问题,比如扩展性低,比如某一个函数出现不兼容,处理起来很麻烦,比如一些漏洞 sql注入、xss、csrf都要自己写,框架中好多都是自带的,最少要用熟练一到两种框架,还要会最少一种开源框架的二次开发,这样一个陌生的项目才能快速理清逻辑。

相关推荐

网友评论

  • (*)

最新评论

  • 访客 2022-07-02 14:14:37 回复

    .回答:因为好多程序员总会粗心忘记使用这个方法,而遗漏某条数据的过滤。2:对COOKIE进行IP绑定cookie里面一般有自动登录信息和session_id,就算对cookie里面的内容全部加了密,cookie的信息一但被别人

    1
  • 访客 2022-07-02 10:19:29 回复

    p为什么过滤style标签4、纠结,原生PHP很熟练,还有没有必要去学ThinkPHPthinkphp 的上传代码中。如何让上传的文件的保存名为它自己的名字,而不是时间戳生成

    2
  • 访客 2022-07-02 12:56:30 回复

    'htmlspecialchars', //默认过滤函数二: 使用框架带的I方法获取来自用户提交的数据;例子:M('Member')-save(array('content'=I('post.content')));这样添加的content内容是经过

    3
  • 访客 2022-07-02 12:25:29 回复

    不行,原生的是基础,有便于理解。如果用原生的做项目会出现很多问题,比如扩展性低,比如某一个函数出现不兼容,处理起来很麻烦,比如一些漏洞 sql注入、xss、csrf都要自己写,框架中好多都是

    4
  • 访客 2022-07-02 04:57:48 回复

    ata=unserialize(decrypt($auth)); if(!empty($data) !empty($data['username']) !empty($

    5