我想sanitize在控制器内打电话.这是我试过的:
class FooController < ApplicationController
include ActionView::Helpers::SanitizeHelper
# ...
end
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
undefined method `white_list_sanitizer' for FooController:Class
Run Code Online (Sandbox Code Playgroud)
我四处搜索,人们建议将include行切换为include ActionView::Helpers,但这会导致此错误:
undefined method `url_for' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
什么是正确的打电话方式sanitize?我正在使用Rails 2.3.5.
当我准备解决输入数据过滤和消毒问题时,我很好奇是否有最佳(或最常用)的做法?在将数据插入数据库之前过滤/清理数据(HTML,JavaScript等)是否更好?还是应该在准备数据以便在HTML中显示时完成?
几点说明:
谢谢!
对于这个查询,有必要使用mysql_real_escape_string吗?
任何改进或查询都没问题?
$consulta = $_REQUEST["term"]."%";
($sql = $db->prepare('select location from location_job where location like ?'));
$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);
$data = array();
while ($sql->fetch()) {
$data[] = array('label' => $location);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,查询速度很重要.
我们正在从Rails 4.2.5升级到5.0.0.beta1
在测试时,我们希望看到像以前一样使用分页链接呈现的索引视图.但是我们现在得到一个ArgumentError错误页面,例如:
ArgumentError in Transactions#index
/app/views/kaminari/_paginator.html.erb where line #10 raised:
<%= paginator.render do -%>
Generating an URL from non sanitized request parameters is insecure!
Application Trace | Framework Trace | Full Trace
app/views/kaminari/_paginator.html.erb:10:in block in _app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060' app/views/kaminari/_paginator.html.erb:9:in_app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060'
app/views/transactions/index.html.erb:2:in `_app_views_transactions_index_html_erb__422882858554400818_60602560'
Run Code Online (Sandbox Code Playgroud)
kaminari提出了一个问题
进一步研究这里是新的Rails 5.0.0.beta1代码,现在抛出错误:

将它添加到config/application.rb'修复'它,但不是一个好主意:
config.action_controller.permit_all_parameters = true
Run Code Online (Sandbox Code Playgroud)
而是添加这个并不能解决问题,不确定原因:
config.action_controller.always_permitted_parameters = [:current_page, :page, :total_pages, :per_page, :remote, :paginator]
Run Code Online (Sandbox Code Playgroud) 我想让我的用户使用正则表达式来实现某些功能.我很好奇将用户输入传递给re.compile()的含义是什么.我假设用户没有办法给我一个可以让他们执行任意代码的字符串.我想到的危险是:
1.解决方案很简单:捕获异常.我不确定是否有一个很好的解决方案2.也许只是限制正则表达式的长度会起作用.
还有什么我需要担心的吗?
我正在使用nokogiri删除一个html页面,我想删除所有样式属性.
我怎样才能做到这一点?(我不使用rails所以我不能使用它的清理方法,我不想使用sanitize gem'因为我想黑名单删除而不是白名单)
html = open(url)
doc = Nokogiri::HTML(html.read)
doc.css('.post').each do |post|
puts post.to_s
end
=> <p><span style="font-size: x-large">bla bla <a href="http://torrentfreak.com/netflix-is-killing-bittorrent-in-the-us-110427/">statistica</a> blabla</span></p>
Run Code Online (Sandbox Code Playgroud)
我想要它
=> <p><span>bla bla <a href="http://torrentfreak.com/netflix-is-killing-bittorrent-in-the-us-110427/">statistica</a> blabla</span></p>
Run Code Online (Sandbox Code Playgroud) 如果我清理并保存用户输入的一些元文本(称为"消息"),就像这样......
update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));
Run Code Online (Sandbox Code Playgroud)
...然后检索并尝试重新显示这样的文本......
echo '<textarea id="message" name="message">' . esc_textarea( get_post_meta( $post->ID, 'message', true ) ) . '</textarea>';
Run Code Online (Sandbox Code Playgroud)
......所有的换行都会丢失.
根据WordPress codex,sanitize_text_field()函数正在删除换行符.那么如何在不丢失换行符的情况下清理用户输入的文本呢?
我正在为我们公司使用的一个可怕的软件编写一个Web界面.该软件没有真正的用户界面,需要我们为我们的客户提供putty访问我们的系统甚至提取数据.我的Web界面必须运行一个exec();函数,它必须传递用户输入的一些变量.
$command = "report-call '$type' '$study' '$server' '$tag' '$specopt1' '$specopt2' '$specopt3' '$specopt4'";
$last_line = exec($command, $output, $returnvalue);
Run Code Online (Sandbox Code Playgroud)
现在我假设我可能只是从$command变量中删除任何分号并且是安全的,但我不确定,这就是为什么我在下个月上线之前在这里提出这个问题.
什么是最好的消毒方法$command?我确实需要在变量中使用一些特殊的字符 [ ] < > ! # $.
我正在使用Wordpress作为CMS开发应用程序.
我有一个包含大量输入字段的表单,需要在存储到数据库之前进行清理.
我想防止SQL注入,注入javascript和PHP代码以及其他有害代码.
目前我正在使用自己的方法来清理数据,但我觉得使用WP使用的功能可能会更好.
我已经看过Wordpress 中的数据验证,但我不确定我应该使用多少这些函数,以及按什么顺序.任何人都可以告诉WP功能最好用吗?
目前我通过执行以下操作"清理"我的输入:
因为带有重音符号的字符(é,ô,æ,ø,å)以有趣的方式存储在数据库中(即使我的表设置为ENGINE=InnoDB,DEFAULT CHARSET=utf8和COLLATE=utf8_danish_ci),我现在正在使用htmlentities转换可以具有重音的输入字段().
在创建SQL字符串以输入数据时,我使用mysql_real_escape_string().
我不认为这足以阻止攻击.因此,非常感谢建议改进.
我的视图中有两段代码:
<%= sanitize('<h3>winter</h3>') %>
<%= '<h3>winter</h3>'.html_safe %>
Run Code Online (Sandbox Code Playgroud)
它们似乎都导致在提供的字符串中编码html标签.它们之间有什么区别,我应该何时使用?
sanitize ×10
php ×5
html ×2
wordpress ×2
controller ×1
difference ×1
exec ×1
filter ×1
helper ×1
html-safe ×1
kaminari ×1
line-breaks ×1
mysql ×1
mysqli ×1
nokogiri ×1
python ×1
regex ×1
textarea ×1
upgrade ×1
user-input ×1